我有一个函数返回lambda表单的场景,我想应用lambda表单但失败了。例如:
#lang racket
(define tes (lambda () `(lambda () 100)))
(tes)
((tes))
结果是:
'(lambda () 100)
. . procedure application: expected procedure, given: '(lambda () 100) (no arguments)
然后如何将`(lambda()100)作为一个过程?
答案 0 :(得分:1)
如果从内部lambda
表达式中删除反引号,它将起作用。或者,您可以在反引号之后立即unquote
,但这相当于一个noop:
> (define tes (lambda () (lambda () 100)))
> ((tes))
100
> (define tes (lambda () `,(lambda () 100)))
> ((tes))
100