1
我想我已經差不多完成了解決方案與以前的問題:Foldr in scheme但在代碼中是一個小麻煩。我需要#t但是我得到第一個元素,false是可以的。這裏是我的代碼:需要#t但得到第一個元素(方案)
(define accum
(lambda (list1 pre?)
(foldr (lambda (x y)
(if y
(if (or (equal? y #t) (pre? x y))
x
#f)
#f))
#t
list1)))
(accum '(1 2 3 4) <=) --> 1 (should be #t)
(accum '(2 2 4 4) <=) --> 2 (should be #t)
(accum '(1 2 5 4) <=) --> #f
(accum '(5 7 2 3) <=) --> #f
如果我寫「x - > #t」,我總是得到#t,即使是#f。
@奧斯卡·洛佩斯這是完美的,非常感謝你。 – Ats
@歡迎您!那真是一個你必須在那裏解決的腦筋急轉彎,很棒的工作! :)。我明白這是一項家庭作業,你的解決方案是完美的,但要記住,在現實生活中,'foldr'可能不是解決這個問題的最佳選擇 - 它會繼續遍歷元素,即使在發現對於某些元素,條件不成立 –
爲讀者提供一個額外練習:如果給定列表包含布爾值(如果pre?'希望得到這些布爾值),會發生什麼? 例如,什麼是應該在案件發生這樣的: '(定義(BOOL
pnkfelix