Язык программирования TRAC

Отрывок из книги Ч. Уэзерелла "Этюды для программистов" (Etudes for Programmers by Charles Wetherell, 1978)

TRAC1.gif
TRAC2.gif
TRAC3a.gif
TRAC3b.gif
TRAC4a.gif
TRAC4b.gif
TRAC5a.gif
TRAC5b.gif
TRAC6a.gif
TRAC6b.gif
TRAC7a.gif

Простая имплементация языка TRAC на Python

Этот интерпретатор крайне ограничен и не воплощает всего множества функций TRAC. В нём наверняка есть баги. Но для простых случаев он сгодится. 
Попробуйте скопировать код в любой интерпретатор Python'a и запустите. 

В качестве примера подойдёт функция вычисления факториала. 
Вариант первый:
 

#(ds, fact, (#(eq, X, 1, 1, (#(mul, X, #(cs, fact, #(sub, X, 1)))))))

#(ss, fact, X)

#(cs, fact, 5)

Вариант второй, в одну строчку:

#(cs, fact, 5 #(ds, fact, (#(eq, X, 1, 1, (#(mul, X, #(cs, fact, #(sub, X, 1))))))) #(ss, fact, X))