如何使它成为程序?

时间:2011-08-17 03:14:38

标签: scheme racket

我有一个函数返回lambda表单的场景,我想应用lambda表单但失败了。例如:

#lang racket

(define tes (lambda () `(lambda () 100)))
(tes)
((tes))

结果是:

'(lambda () 100)
. . procedure application: expected procedure, given: '(lambda () 100) (no arguments)

然后如何将`(lambda()100)作为一个过程?

1 个答案:

答案 0 :(得分:1)

如果从内部lambda表达式中删除反引号,它将起作用。或者,您可以在反引号之后立即unquote,但这相当于一个noop:

> (define tes (lambda () (lambda () 100)))
> ((tes))
100
> (define tes (lambda () `,(lambda () 100)))
> ((tes))
100