Как сделать это как процедуру? - PullRequest
1 голос
/ 17 августа 2011

У меня есть сценарий, в котором функция возвращает лямбда-форму, и я хочу применить лямбда-форму, но не удалось.Пример:

#lang racket

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

результат:

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

Тогда как я могу сделать `(lambda () 100) как процедуру?

1 Ответ

1 голос
/ 17 августа 2011

Если вы удалите кавычку из внутреннего выражения lambda, оно будет работать. С другой стороны, вы можете сразу же unquote после обратной цитаты, но это равносильно noop:

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