Package: calchylus3
Calchylus 3 - Lambda calculus with Hy=====================================Intro-----``calchylus3`` is a computer installable `Hy`_ module that is used to evaluate,and furthermore through this documentation, shine light to the basics of Lambdacalculus (also written as λ-calculus).`Lambda calculus`_ is a formal system in mathematical logic for expressingcomputation that is based on function abstraction and application usingvariable binding and substitution.The target audience is those who:a) are interested in the theory and the history of the programming languagesb) may have or are interested to gain some experience in Python and/or Lispc) who wants to narrow the gap between mathematical notation andprogramming languages, especially by the means of logic`Andrew Bayer`_ writes in his blog post about formal proofs and deduction:*Traditional logic, and to some extent also type theory, hides computationbehind equality.*Lambda calculus, on the other hand, reveals how the computation in logic isdone by manipulation of the Lambda terms. Manipulation rules are simple andwere originally made with a paper and a pen, but now we rather use computers forthe task. Lambda calculus also addresses the problem, what can be proved andsolved and what cannot be computed in a finite time. Formally these are calledthe `decidability`_ and the `halting`_ problems.Beside evaluating Lambda expressions, ``calchylus3`` module can serve as astarting point for a mini programming language. Via `custom macros`_representing well known Lambda forms, ``calchylus3`` provides all necessaryelements for boolean, positive integer, and list data types as well asconditionals, loops, variable setters, imperative do structure, logicalconnectives, and arithmetic operators. You can build upon that, for example`real numbers`_ , even negative complex numbers if that makes any sense. Yourimagination is really the only limit.Finally, when investigating the open source ``calchylus3`` implementation that ishosted on `GitHub`_ , one can expect to get a good understanding of the higherorder functions and the `combinatory logic`_ , not the least of the fixed pointcombinator or shortly, ϒ combinator.Quick start-----------For people willing to get hands quickly on coding:**Install**.. code-block:: bash$ pip install calchylus3**Open Hy**.. code-block:: bash$ hy**Import lambda library**.. code-block:: hylang(require [calchylus3.lambdas [*]])**Initialize lambda macros**.. code-block:: hylang(with-macros L)**Lambda dance**.. code-block:: hylang(print* ((L x y [x [x y]]) 'a 'b)) ; output: (a (a b)).. code-block:: hylang(print* (FIBONACCI SEVEN 'x 'y)) ; output: (x (x (x (x (x (x (x (x (x (x (x (x (x y)))))))))))))Documentation-------------For full documentation, see: `calchylus3.readthedocs.io`_.. |Output:| replace:: [output].. _halting problem: http://www.huffingtonpost.com/entry/how-to-describing-alan-turings-halting-problem-to_us_58d1ae08e4b062043ad4add7.. _combinatory logic: https://en.wikipedia.org/wiki/Combinatory_logic.. _GitHub: https://github.com/markomanninen/calchylus3.. _real numbers: https://cs.stackexchange.com/questions/2272/representing-negative-and-complex-numbers-using-lambda-calculus?noredirect=1&lq=1.. _my favorite programming language: http://www.python.org.. _custom macros: http://calchylus.readthedocs.io/en/latest/macros.html.. _decidability: https://plato.stanford.edu/entries/computability/#UnsHalPro.. _Andrew Bayer: http://math.andrej.com/2016/08/30/formal-proofs-are-not-just-deduction-steps/.. _Lambda calculus: https://en.wikipedia.org/wiki/Lambda_calculus.. _Hy: http://docs.hylang.org.. _calchylus3.readthedocs.io: http://calchylus3.readthedocs.io/