ON>Спасибо. ON>Однако не модно уже посылать людей ... в библиотеку. ON>Не то, чтобы мне искать было лень, просто обычно лучше чего-то одного придерживаться, а то найдешь такое что потом не знаешь как потерять.
Написать примитивный интерпретатор ФЯ не проблема. Как уже выше сказали ФЯ основываются на лямбда исчислении. Это чисто математическая теория, которая возникла задолго до появления первых компьютеров и первоначально расчитывали, что она станет основанием логики и математики. Позже, однако, выяснилось, что эта теория является ни чем иным, как альтернативным способом выражения понятия вычислимости. Т.е. машина Тьюринга и лямбда исчисление в некотором роде "эквивалентны". В частности это значит, что ФЯ ничем не уступают ИЯ в выразительности.
Лямбда исчисление само по себе очень простое. Там есть переменные a,b,c... символ \lambda и скобки.
Множество лямбда выражений L определяются следующим образом:
1) x принадлежит L
2) если M принадлежит L, то (\lambda xM) принадлежит L
3) если M, N принадлежат L, то (MN) принадлежит L
Ну и есть 3 простых правила вывода (преобразования) этих выражений, которые я тут писать сейчас не буду. На первый взгляд все это выглядит очень примитивно, однако, любое лямбда выражение является по сути дела программой, а правила преобразований позволяют редуцировать большие лямбда программы к "результату". Все языки, которые сейчас принято считать функциональными, по сути дела лишь надстройки над лямбда исчислением. За любой функциональной программой без труда можно увидеть соответствующее ей лямбда выражение (с той оговоркой, что в целях оптимизации используется расширенное и типизированное лямбда исчисление с целыми числами, строками и т.п. И попробуйте ка по императивной программе построить соответствующую машину Тьюринга). А Lisp, например, вообще почти копия ЛИ, что и не удивительно.
Именно в этой близкой связи с теорией и заключена сила ФЯ. Появляется возможность относительно безболезненно анализировать функ. программы математическими методами, искать алгоритмы распараллеливания. Становится легче решать практические задачи, поскольку программы на ФЯ похожи на математические утверждения, что больше соответствует мышлению человека.