Я пишу глупый летрек в Scheme (DrRacket Pretty Big):
(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?>
Не могли бы вы сказать мне, что мне не хватает? Исправление тоже было бы неплохо, но, пожалуйста, без определений, хотя и не обязательно.
Спасибо!
letrec
иeval
не работает: я полагаю, что ваше условное выражение должно использоватьprocedure?
вместоnull?
, иначе вы получите бесконечный цикл, даже еслиeval
будет работать так, как вы ожидали. - person Rörd   schedule 19.02.2011