DrRacket:lambda匿名函数
DrRacket:lambda匿名函数,lambda,scheme,racket,Lambda,Scheme,Racket,test1之间的区别是什么: (define test1 (lambda (x) (* x x))) 和test2 (define (test2 x) (lambda (x) (* x x))) 他们不是都应该是一样的吗。当我测试test1时,我得到了正确的答案,但是test2返回或(lambda(a1)… 为什么会这样?Test1相当于 (define (test3 x) (* x x)) 在测试2中,lambda太多了 (define (func-name argume
test1
之间的区别是什么:
(define test1
(lambda (x) (* x x)))
和test2
(define (test2 x)
(lambda (x) (* x x)))
他们不是都应该是一样的吗。当我测试test1
时,我得到了正确的答案,但是test2
返回
或(lambda(a1)…
为什么会这样?Test1相当于
(define (test3 x)
(* x x))
在测试2中,lambda太多了
(define (func-name argument)
body))
这将变量func name
定义为一个函数,该函数使用一个参数作为函数的内容,参数的主体为body
。它是以下内容的缩写:
(define func-name (lambda (argument)
body)
因此,您的第二个示例可以这样编写:
(define test2
(lambda (x)
(lambda (x) (* x x))))
test2
是一个返回函数的函数。另外,由于x
在这两个函数中都使用,因此内部函数将永远无法访问参数。想象一下:
(define (make-less-than value)
(lambda (arg)
(< arg value))
(filter (make-less-than 10) '(9 10 1 11 4 19))
; ==> (9 1 4)
(filter (lambda (v) (< v 10)) '(9 10 1 11 4 19))