Wolfram Language Paclet Repository
Community-contributed installable additions to the Wolfram Language
Tools for the lambda calculus
Contributed by: Nik Murzin
This paclet provides basic functionality to work with lambda expressions expressed with De Bruijn indices.
To install this paclet in your Wolfram Language environment,
evaluate this code:
PacletInstall["Wolfram/Lambda"]
To load the code after installation, evaluate this code:
Needs["Wolfram`Lambda`"]
Create a lambda term using (aka formal λ, \[FormalLambda] or .Lambda):
In[1]:= | ![]() |
Parse lambda from a string:
In[2]:= | ![]() |
Out[2]= | ![]() |
In[3]:= | ![]() |
Out[3]= | ![]() |
Generate 10 random lambda expressions with depth 3 and maximum sub-expression length of 2:
In[4]:= | ![]() |
Out[4]= | ![]() |
Evaluate a lambda expression:
In[5]:= | ![]() |
Out[5]= | ![]() |
In[6]:= | ![]() |
Out[6]= | ![]() |
Convert lambda to different forms:
In[7]:= | ![]() |
Out[8]= | ![]() |
In[9]:= | ![]() |
Out[9]= | ![]() |
In[10]:= | ![]() |
Out[10]= | ![]() |
In[11]:= | ![]() |
Out[11]= | ![]() |
In[12]:= | ![]() |
Out[12]= | ![]() |
In[13]:= | ![]() |
Out[13]= | ![]() |
In[14]:= | ![]() |
Out[14]= | ![]() |
In[15]:= | ![]() |
Out[15]= | ![]() |
In[16]:= | ![]() |
Out[16]= | ![]() |
In[17]:= | ![]() |
Out[17]= | ![]() |
In[18]:= | ![]() |
Out[18]= | ![]() |
Colorize lambda:
In[19]:= | ![]() |
Out[20]= | ![]() |
In[21]:= | ![]() |
Out[21]= | ![]() |
Annotate lambda with smiles:
In[22]:= | ![]() |
Out[22]= | ![]() |
Make a graphical representation of the lambda:
In[23]:= | ![]() |
Out[23]= | ![]() |
Enumerate and visualize all lambda expression up-to depth 2 and length 2:
In[24]:= | ![]() |
Out[24]= | ![]() |
Evaluate lambdas:
In[25]:= | ![]() |
Out[25]= | ![]() |
Perform η-reduction:
In[26]:= | ![]() |
Out[26]= | ![]() |
Make lambda from a Function:
In[27]:= | ![]() |
Out[27]= | ![]() |
Turn a random lambda expression to a Function and back:
In[28]:= | ![]() |
Out[28]= | ![]() |
In[29]:= | ![]() |
Out[29]= | ![]() |
In[30]:= | ![]() |
Out[30]= | ![]() |
Make lambda from a combinator:
In[31]:= | ![]() |
Out[31]= | ![]() |
Evaluate Church numerals:
In[32]:= | ![]() |
Out[32]= | ![]() |
Define arithmetic functions:
In[33]:= | ![]() |
In[34]:= | ![]() |
Out[34]= | ![]() |
Evaluate Ackermann function:
In[35]:= | ![]() |
In[36]:= | ![]() |
Out[36]= | ![]() |
Iterate a single sub-evaluation:
In[37]:= | ![]() |
Out[37]= | ![]() |
Trace a non-terminating lambda expression and visualize the intermediate steps in many different ways:
In[38]:= | ![]() |
Out[38]= | ![]() |
In[39]:= | ![]() |
Out[39]= | ![]() |
Make multiway graphs of β-reductions with highlighted normal ordering reduction path:
In[40]:= | ![]() |
Out[41]= | ![]() |
Wolfram Language Version 14.2