这里有没有使用lambda的方法?

这里有没有使用lambda的方法?,lambda,scheme,racket,Lambda,Scheme,Racket,将此列表中过滤的元素乘以2。有没有办法在这里使用lambda?我知道这不是必需的,但我正在尝试适应lambda当然,只需将f命名函数替换为lambda,这是一个匿名函数: (define ( f x) (* 2 x)) (define (mapit n) (cond [(empty? n) empty] [(cons? n) (map f (filter odd? n))])) (check-expect (mapit (list 1 2 3 4 5 6

将此列表中过滤的元素乘以2。有没有办法在这里使用
lambda
?我知道这不是必需的,但我正在尝试适应
lambda
当然,只需将
f
命名函数替换为
lambda
,这是一个匿名函数:

(define ( f x)
  (* 2 x))

(define (mapit n)
  (cond
    [(empty? n) empty]
    [(cons? n)
      (map f (filter odd? n))]))


(check-expect (mapit (list 1 2 3 4 5 6 7 8))(list 2 6 10 14))
很容易理解为什么我们可以进行上述更换。请记住:

(define (mapit n)
  (cond
    [(empty? n) empty]
    [(cons? n)
      (map (lambda (x) (* 2 x))
           (filter odd? n))]))
…相当于:

(define (f x)
  (* 2 x))

…在
mapit
过程中,我们只需要用相应的值替换
f
。一般来说:当您需要一个一次性函数时,您应该使用
lambda
,这是一个不会在其他地方使用的函数。另一方面,如果该函数将在多个位置重复使用,则将其命名并按名称引用。

当然,只需将
f
命名函数替换为
lambda
,这是一个匿名函数:

(define ( f x)
  (* 2 x))

(define (mapit n)
  (cond
    [(empty? n) empty]
    [(cons? n)
      (map f (filter odd? n))]))


(check-expect (mapit (list 1 2 3 4 5 6 7 8))(list 2 6 10 14))
很容易理解为什么我们可以进行上述更换。请记住:

(define (mapit n)
  (cond
    [(empty? n) empty]
    [(cons? n)
      (map (lambda (x) (* 2 x))
           (filter odd? n))]))
…相当于:

(define (f x)
  (* 2 x))
…在
mapit
过程中,我们只需要用相应的值替换
f
。一般来说:当您需要一个一次性函数时,您应该使用
lambda
,这是一个不会在其他地方使用的函数。另一方面,如果要跨多个位置重用该函数,请命名它并按名称引用它