Добавить letrec в ядро интерпретатора Racket

2 000 руб. за проект
03 февраля 2023, 11:52 • 0 откликов • 16 просмотров
Добавьте letrec в ядро интерпретатора. Вычисление выражения



(letrec ([f1 (lambda params1 body1)]
...

[fn (lambda paramsn bodyn)])
body)

в окружении env состоит из следующих шагов.





  1. 1) Для каждого i сформировать задумку ti = (fi, paramsi, bodyi, env).


  2. 2) Создать кадр, где переменные fi связаны с задумками ti .В качестве объемлющего окружения указать env.


  3. 3) В полученном окружении вычислить выражения (lambda paramsi bodyi). Обозначим их значения через vi.


  4. 4) Создать кадр, где переменные fi связаны со значениями vi. В качестве объемлющего окружения указать env.


  5. 5) В полученном окружении вычислить body.



Изменения также требуются в части m-eval, отвечающей за вычисление переменной
x в окружении env. Если x в env связана с задумкой t = (f, params, body, env1),
то значением x является результат вычисления t в окружении env1.