假设我们有一个函数f。该函数将列表l作为参数,并返回一个参数g的函数。函数g作为参数x并在列表l中查找x。如果它发现它返回true,则返回false。
我对不使用内置功能的解决方案感兴趣。 我的开始代码:
(define (f l)
(lamda (x)
..........
)))
答案 0 :(得分:2)
你可以这样做:
(define (f l)
(lambda (x)
(and (member x l) #t)))
(define g (f '(a b c e)))
(g 'a)
=> #t
(g 'd)
=> #f
如果您需要避免使用内置member
程序,则可以自行推送member?
:
(define (member? e l)
(and (not (null? l))
(or (eq? (car l) e) (member? e (cdr l)))))
(define (f l)
(lambda (x)
(member? x l)))
或将member?
作为内部程序,如果您愿意:
(define (f l)
(define (member? e l)
(and (not (null? l))
(or (eq? (car l) e) (member? e (cdr l)))))
(lambda (x)
(member? x l)))