pyLambda
pyLambda - это интерпретатор языка, основанного на нетипизированном λ-исчислении.
Основное назначение языка - учебное. Язык устроен так, что в интерпретатор можно просто копировать примеры из учебников по λ-исчислению, и они будут работать. Что-либо полезное на этом языке написать сложно, т.к. λ-исчисление довольно далеко от привычных языков программирования, в частности, здесь нет условных операторов, операторов цикла и пр., хотя теоретически всё это можно реализовать на самом языке.
ОПИСАНИЕ ЯЗЫКА
Язык состоит из следующих «частей»:
Остальные части являются расширениями λ-исчисления:
Кроме того, интерпретатор понимает несколько специальных команд (они должны быть записаны в отдельной строке):
Вычисление выражения происходит в два этапа. На первом совершаются все возможные β-редукции (с предварительной α-конверсией) и η-редукци, в нормальном, или «ленивом» порядке, то есть слева направо. При этом не делается попытки привести выражение к нормальной форме, во-первых потому, что это могло бы привести к зацикливанию, во-вторых с тем, чтобы можно было проследить все стадии вычисления. На втором этапе вместо имен переменных подставляются их значения и производятся арифметические операции. На втором этапе возможно зацикливание из-за бесконечно рекурсивных определений. Прервать вычисление можно нажатием Ctrl-C.
Специальная переменная % ссылается на результат предыдущего вычисления. Таким образом, не до конца вычисленное выражение можно заставить вычисляться дальше, просто введя %. Однако это обычная переменная, правило ленивости применимо и к ней, поэтому с присваиваниями вроде z=% следует быть очень осторожным.
Переменные не имеют типов (реализовано бестиповое λ-исчисление). Выражения же имеют тип, то есть могут быть нескольких разновидностей. Именно, тип выражения может быть:
Интерпретатор показывает тип вычисленного выражения (через ::) в основном для того, чтобы можно было сориентироваться, что из себя представляет длинное выражение.
БАГИ
На этапе α-конверсии существует неотловленный баг, приводящий к тому, что в некоторых сложных выражениях подтерм λx.λy.x превращается в λx.λy.x'. Если кому-нибудь удастся хотя бы выявить точные условия проявления бага, а еще лучше - исправить его, буду очень благода ;)
ЛИЦЕНЗИЯ
GNU GPL v3 or any later.

bfpsrkkx venta cialis 0332 zithromax ohne rezept bQZMPX viagra 4901 levitra vente RkNly cialis 5690 generic Cialis MXULh
crhgopyw naprosyn 8]]] cardizem 3823 viagrx 9359 cheap plendil zDOuDi cheap keftab =-]
giajkha viagra =-] cheap cialis >:]] generic viagra bcEDZ cialis irDvCe
Enlightening the world, one heflupl article at a time.
jgimkoux advances bTxBFy cheap cigarette >:-OOO payday loans no credit check 6577 pay day loans SwuXq
Payday loan companies are all over the place. There are over 10,000 pydaay loan outlets in business in the U.S. And they’re spread out in similar fashion throughout the world. If there isn’t a pydaay loan store near you, you can search the Internet and find hundreds of online pydaay loans there.These companies are in business to “help” those in dire financial need. They offer these loans to people who can’t find the money they need anywhere else. Let’s profile one company who offers pydaay loans as part of their overall financial services business – Money Mart.
polgqah cialis EfLLWH genericcialis %-[[[ viagra 8]]] viagra 3916 cheap cialis ucQsfl viagra wwtjv
lqhxur axoyspml
tpsvdy cialis 1875 cheap cialis online 1712 cheap viagra online 8]]] cialis :-O cheap viagra aAHiT cheap viagra online 5426
clohrd cash advance fwqTHU Cash Advance %-[[[ payday advances >:-OOO
hkakgzsy buy cialis online kBeBkG buy cialis hImfg viagra >:-[ viagra >:]]
zuhsan bad credit cash advance FIPuo personal loans jHVrcJ quickquid oHvijD
mfhast bactroban 7886 cipro =-] köpa cipro :-O cialis hWIzTE order viagra >:-OOO
oilebyz payday loans >:]] quick payday loans 5108 short term loan 8]]]