这是我的代码:
(define func1
(define nest-func
(lambda (x)
(+ x x)))
(lambda (y)
(+ y (nest-func y))))
drracket说:
main.rkt:160:4:定义:不良语法(标识后的多个表达式)in :(定义func1(define func1(define nest-func(lambda(x)( x x)))(lambda(y)( y)( y)(Nest-func y)))))) #(4186 125)
为什么这是?
内部定义必须在lambda
内。因此,请尝试以下操作:
(define func1
(lambda (y)
(define nest-func
(lambda (x)
(+ x x)))
(+ y (nest-func y))))
或者,您是否只想调用一次lambda
?然后使用let
:
(define func1
(let ((nest-func (lambda (x)
(+ x x))))
(lambda (y)
(+ y (nest-func y)))))
还请注意速记表格:
(define (func1 y)
(define (nest-func x)
(+ x x))
(+ y (nest-func y)))