В схеме #t
означает логическое значение true, #f
- значение false. Остальное я не совсем понимаю, но предлагаю отладчик DrRacket, чтобы посмотреть, что происходит.
(define e-env (empty-env))
присваивает e-env
значение empty-env
(define (scheme-val? x) #t)
определяет анонимную функцию, которая принимает параметр x
, и, если это scheme-val
(в данном случае, что угодно), возвращает #t
.
Результат e1
после выполнения этого кода:
#(struct:extended-env x 1 #(struct:extended-env y #f #(struct:empty-env)))
так e1
является extended-env with var='x, val=1, envi=(extended-env with var='y, val=#f, envi=e-env)
(мне кажется)