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))
你将如何完成这个(如果正确的话)?
假设正在搜索的数字是5
(根据代码而不是问题描述推断) - 有一个过程已经完成了所要求的,它被称为member
:
(member 5 '(1 3 5 7))
=> '(5 7)
其中,根据文档:
找到 lst 的第一个相等的元素?to 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
是的!签出ormap
功能。
程序
(ormap proc lst ...+) → any
proc : procedure?
lst : list?
在将proc应用于lst的每个元素的意义上类似于map,但是
如果proc的每个应用程序都产生#f,则结果是#f;和
结果是第一次应用 proc 产生的值不是#f,在这种情况下,proc 不会应用于 lsts 的后面元素;proc 对 lsts 的最后一个元素的应用相对于 ormap 调用处于尾部位置。