Wolfram Function Repository
Instant-use add-on functions for the Wolfram Language
Function Repository Resource:
Visualize the evolution of a combinator expression
ResourceFunction["CombinatorEvolutionPlot"][evol, type] renders the combinator evolution evol according to the specified type of visualization. |
"StatesDisplay" | displays the combinator evolution in a list, or multiple combinator evolutions in a list of lists, in a stylized way |
"ExpressionDepthPlot" | displays an array plot showing the depths of subexpressions throughout the combinator evolution |
"SizeAndMatches" | visualizes the leaf count of expressions and which leaves are changed by which rule at each step in evolution |
"UpdateDepthPlot" | visualizes the depth at which rule applications occur relative to the overall leaf counts at each step in evolution |
"DepthAndUpdatePlot" | visualizes depths of subexpressions throughout the combinator evolution, as well as which leaves are changed by which rule in evolution |
"DepthCuboidPlot" | visualizes depths of subexpressions throughout the combinator evolution in 3D, as well as which leaves are changed by which rule in evolution |
"ArrayPlot" | displays an array plot of evol |
"ArrayPlotLeftAssociative" | displays an array plot wherein the application operator is left associative |
"ArrayPlotRightAssociative" | displays an array plot wherein the application operator is right associative |
"ArrayPlotBracketsOnly" | displays an array plot wherein only the brackets are shown |
"ArrayPlotPolishNotation" | displays an array plot wherein each step is written in Polish notation |
"ArrayPlotReversePolishNotation" | displays an array plot wherein each step is written in reverse Polish notation |
"SpanThickness" | 0.2 | the thickness of match indicator line in "SizeAndMatches", "DepthAndUpdatePlot" |
"IncludeDepthAxis" | False | whether to show expression depth in 3D in "ExpressionDepthPlot" |
"DisplayStyles" | Automatic | styling for rendering evol in a grid in "StatesDisplay" |
"IncludeUpdateHighlighting" | True | whether updates are indicated in "DepthCuboidPlot" |
"UpdateHighlightingStyles" | Automatic | styling for update highlighting |
Display the fixed-point evolution of a combinator expression:
In[1]:= |
![]() |
Out[1]= |
![]() |
Generate a plot showing the position depths in each expression of the combinator evolution:
In[2]:= |
![]() |
Out[2]= |
![]() |
Show the expression depths of the combinator evolution in 3D:
In[3]:= |
![]() |
Out[3]= |
![]() |
Show the leaf count and position/type of the matches throughout the combinator evolution:
In[4]:= |
![]() |
Out[4]= |
![]() |
Show the total depth of the combinator expressions and the depth at which the updates occur:
In[5]:= |
![]() |
Out[5]= |
![]() |
Show the leaf count, depth of subexpressions, and position and type of the matches throughout the combinator evolution:
In[6]:= |
![]() |
Out[6]= |
![]() |
Visualize the same information from the previous example in 3D:
In[7]:= |
![]() |
Out[7]= |
![]() |
Display an ArrayPlot of the combinator evolution in standard form:
In[8]:= |
![]() |
Out[8]= |
![]() |
Display an ArrayPlot of the combinator evolution with left associative combinator application:
In[9]:= |
![]() |
Out[9]= |
![]() |
Display an ArrayPlot of the combinator evolution with right associative combinator application:
In[10]:= |
![]() |
Out[10]= |
![]() |
Display an ArrayPlot of the combinator evolution with only the brackets kept in each expression:
In[11]:= |
![]() |
Out[11]= |
![]() |
Display an ArrayPlot of the combinator evolution in Polish notation:
In[12]:= |
![]() |
Out[12]= |
![]() |
Display an ArrayPlot of the combinator evolution in reverse Polish notation:
In[13]:= |
![]() |
Out[13]= |
![]() |
Display a combinator evolution with left associative combinator application:
In[14]:= |
![]() |
Out[14]= |
![]() |
Add styling to the same rendering of the combinator evolution:
In[15]:= |
![]() |
Out[15]= |
![]() |
Display a combinator expression evolved via two different evaluation schemes:
In[16]:= |
![]() |
Out[16]= |
![]() |
Display a combinator evolution with match framing at each step:
In[17]:= |
![]() |
Out[17]= |
![]() |
Define the color rules for an ArrayPlot of a combinator evolution in reverse Polish notation:
In[18]:= |
![]() |
Out[18]= |
![]() |
This work is licensed under a Creative Commons Attribution 4.0 International License