方案:为什么评估letrec中定义的递归函数失败?

我在Scheme(DrRacket Pretty Big)中写了一个愚蠢的letrec:
(letrec
    ((is-creative? 
      (lambda (writing)
        (if (null? writing)
            #f
            (is-creative? 
             (eval writing))))))
(is-creative? 
 (quote is-creative?)))
语法检查没问题,但是运行它失败了:
reference to undefined identifier: is-creative?
调试器在失败时说:
is-creative? => #<procedure:is-creative?>
你能告诉我我错过了什么吗?校正也会很好,但请不要定义,但不是必要的。 谢谢!     
已邀请:
Eval没有看到局部变量。在eval运行的范围内,是否具有创造性?绑定为局部变量但是,因为它位于(letrec)内部而不是它之后,它尚未绑定在全局范围内。请参阅eval文档,其中讨论了以下内容: http://docs.racket-lang.org/guide/eval.html 我不认为你可以做你正在尝试用eval做什么。我不知道你为什么要这么做,所以我很难提出另一种选择。不过,您可以尝试使用(apply)。     

要回复问题请先登录注册