схема r5rs неопределенная ошибка при попытке определить цитируемую вложенную функцию - PullRequest
0 голосов
/ 20 апреля 2019

Похоже, что если я захочу использовать eval для определения вложенной функции в среде, и если до возврата есть только суб define s, то на то, что я определил ранее, нельзя ссылаться более поздним defines (вызывая неопределенную ошибку).

Но если я добавлю несколько бессмысленных кодов между суб define с, я смогу выполнить код без проблем.

Я не знаю, является ли это неправильным использованием eval или чем-то еще, но поведение кажется странным ... Кто-нибудь может помочь?

#lang racket
(require r5rs)
(define env (scheme-report-environment 5))
(eval '(define (f)
         ;comment the next line to cause error
         0 ; or anything except define
         (define x 3)
         (define y (+ x 1))
         y) env)
(eval '(f) env)

Сообщение об ошибке:

x: undefined;
 cannot use before initialization
...