这是我的代码:
(define func1
(define nest-func
(lambda (x)
(+ x x)))
(lambda (y)
(+ y (nest-func y))))
DrRacket说:
main.rkt:160:4:定义:错误的语法(标识符后面的多个表达式):(定义func1(定义nest-func(lambda(x)(+ xx)))(lambda(y)(+ y) (nest-func y)))) #(4186 125)
为什么会这样?
答案 0 :(得分:2)
内部定义必须在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)))))
答案 1 :(得分:0)
还要注意缩写形式:
(define (func1 y)
(define (nest-func x)
(+ x x))
(+ y (nest-func y)))