Как перечислить все промежуточные этапы оценки в схеме - PullRequest
0 голосов
/ 14 февраля 2019

Например, если есть выражение:

(map (lambda(x) (add1 x)) '(1 2 3))

Оценивается:

'(2 3 4)

Как отобразить все промежуточные шаги, которые в этом случае будут:

(map (lambda(x) (add1 x)) '(2 2 3))
(map (lambda(x) (add1 x)) '(2 3 3))

1 Ответ

0 голосов
/ 25 апреля 2019

Я думаю, что лучший способ сделать это - начать с создания собственного интерпретатора лямбда-исчисления и добавления дополнительных необходимых вам схемных функций, а затем изменить этот интерпретатор для получения требуемой трассировки выполнения.

Это может помочь вам начать писать переводчика http://matt.might.net/articles/implementing-a-programming-language/

...