Scheme 函数返回Racket中的其他递归函数

Scheme 函数返回Racket中的其他递归函数,scheme,racket,Scheme,Racket,假设我们有一个函数f。此函数以列表l为参数,并返回一个参数g的函数。函数g以参数x为参数,并在列表l中查找x。如果它发现它返回true,否则返回false 我对不使用内置函数的解决方案感兴趣。 我的起始代码: (define (f l) (lamda (x) .......... ))) 你可以这样做: (define (f l) (lambda (x) (and (member x l) #t))) (define g (f '(a b c e))) (g 'a) =&g

假设我们有一个函数f。此函数以列表l为参数,并返回一个参数g的函数。函数g以参数x为参数,并在列表l中查找x。如果它发现它返回true,否则返回false

我对不使用内置函数的解决方案感兴趣。 我的起始代码:

(define (f l) 
(lamda (x) 
.......... 
)))
你可以这样做:

(define (f l)
  (lambda (x)
    (and (member x l) #t)))

(define g (f '(a b c e)))
(g 'a)
=> #t
(g 'd)
=> #f
如果您需要避免内置的
成员
过程,您可以滚动自己的
成员?

(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)))
或者将
成员?
作为内部程序,如果您愿意:

(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)))

您希望避免哪些函数?使用内置函数解决它,然后用您自己的实现替换内置函数。不要同时做两件事。