謂詞鑑於測試單個項目的謂詞的程序,如positive?
,我想創建一個all-are
版本的它測試列表中的所有元素是否滿足謂詞定義給出球拍
防爆:
((all-are positive?) '(1 2 3 4)) => #t
((all-are even?) '(2 4 5 6 8)) => #f
all-are
應採取謂詞作爲參數,並返回一個新的功能可以應用於元素的列表
謂詞鑑於測試單個項目的謂詞的程序,如positive?
,我想創建一個all-are
版本的它測試列表中的所有元素是否滿足謂詞定義給出球拍
防爆:
((all-are positive?) '(1 2 3 4)) => #t
((all-are even?) '(2 4 5 6 8)) => #f
all-are
應採取謂詞作爲參數,並返回一個新的功能可以應用於元素的列表
這是相當簡單的在現有過程的形式來表示:andmap
- 返回#t
如果給定的斷言,當應用到列表中的所有元素,計算結果爲適用於所有的人:
(define ((all-are predicate) lst)
(andmap predicate lst))
我正在使用一些語法糖來返回curried過程,因爲問題指出必須返回函數。它按預期工作:
((all-are positive?) '(1 2 3 4))
> #t
((all-are even?) '(2 4 5 6 8))
> #f
我猜,你必須從頭開始實現的過程,而不是使用現有的程序在我的解決方案。一個很好的練習就是將上面的簡短版本(它表明了需要完成的工作的一般概念)變成簡單的,只用基本形式 - 這可能是你的老師對你的期望。
只是想只能用「foldr相似」,基礎知識 代碼原來是:
(define (all-are pred l)
(foldr (λ (x y)
(and y (pred x))) #t l))
嘗試使用foldr相似,與foldl和其他基礎知識,找出必要的參數,這將是一個很好的編程習慣....希望它有幫助!
請解釋你遇到了什麼問題。目前還不清楚你遇到了什麼困難。 – dyoo