Design a function that consumes a [Listof Number] and checks if 0 is in the list.
我想用lambda
來解決這個問題。我一直在閱讀這本書,這是我迄今爲止所提出的。我希望我接近。使用拉姆達球拍
(define (five? lon)
(..... (lambda (x)
(= x 5))
lon))
你會如何完成這個(如果正確)?
Design a function that consumes a [Listof Number] and checks if 0 is in the list.
我想用lambda
來解決這個問題。我一直在閱讀這本書,這是我迄今爲止所提出的。我希望我接近。使用拉姆達球拍
(define (five? lon)
(..... (lambda (x)
(= x 5))
lon))
你會如何完成這個(如果正確)?
是!檢出ormap
功能。
過程
(ormap proc lst ...+) → any
proc : procedure?
lst : list?
From the Racket documentation:
類似的意義上,PROC施加到 LST的每個元素映射,但
結果#F如果proc的每個應用程序都生成#f;和
結果是proc產生的值不是#f的第一個應用程序,在這種情況下,proc不適用於lsts的後續 元素; pro對 的最後一個元素的應用lsts與ormap調用相比處於尾部位置。
假設多數民衆贊成被搜索的數量是5
(根據碼,而不是問題的描述推斷) - 有一個已經做什麼被問的過程,這就是所謂的member
:
(member 5 '(1 3 5 7))
=> '(5 7)
其中,根據文檔:
定位lst的第一個元素是否相等?到v。如果存在這樣的元素,則返回從該元素開始的lst的尾部。否則,結果是#f。
但是,如果我們從頭開始實現一個類似的過程,這是解決方案將如何看,填充了空白:
(define five?
(lambda (lon)
(if <???> ; is the list empty?
<???> ; then the number is not in the list
(or <???> ; otherwise the current element is 5 or
(five? <???>))))) ; the number is in the rest of list
不要忘記對代碼進行測試:
(five? '())
=> #f
(five? '(1 2 3 6 7 9))
=> #f
(five? '(1 2 3 5 7 9))
=> #t
它是5還是0?問題描述指出它是0,但代碼使用5 – 2013-03-10 04:13:46