Genetic Functional Programming Мой интерпретатор моего варианта лиспа:
http://bin.mypage.sk/FILES/gp-0.0.1.tar.bz2В качестве примера там имеются две функции, считающие длину списка с обычной и хвостовой рекурсией.
Выглядит этот лисп довольно жестоко, ибо не предназначен для человеческих глаз, кроме того пока имееются довольно скудный список встроеных функций:
#0 - EVAL
#1 - CONS
#2 - CAR
#3 - CDR
#4 - NULL
#5 - +
Есть различия от clisp в поведении функций, (CAR NIL) и (CDR NIL) дают ERROR, а не NIL.
Для передачи имени функции в качестве параметра её надо блокировать от вычислений "( ' #4 )", иначе интерпретатор подумает, что она вычисляется, и испортит стеки.
При записи каждый элемент должен отделяться пробельным символом (ибо делать нормальный парсер было лень).