Genetic Functional Programming
Aug. 7th, 2009 03:55 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Мой интерпретатор моего варианта лиспа:
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 )", иначе интерпретатор подумает, что она вычисляется, и испортит стеки.
При записи каждый элемент должен отделяться пробельным символом (ибо делать нормальный парсер было лень).
copy: http://lj.rossia.org/users/o01eg/1066.html
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 )", иначе интерпретатор подумает, что она вычисляется, и испортит стеки.
При записи каждый элемент должен отделяться пробельным символом (ибо делать нормальный парсер было лень).
copy: http://lj.rossia.org/users/o01eg/1066.html