Wolfram Function Repository
Instant-use add-on functions for the Wolfram Language
Function Repository Resource:
Show the evolution of a combinator expression to its fixed point based on defined rules and an evaluation scheme
ResourceFunction["CombinatorFixedPointList"][cmb] shows the evolution of the combinator expression cmb to its fixed point using S and K combinator transformation rules and single leftmost-outermost updating order. | |
ResourceFunction["CombinatorFixedPointList"][cmb] shows the evolution of the combinator expression cmb to its fixed point using S and K combinator transformation rules and single leftmost-outermost updating order. | |
ResourceFunction["CombinatorFixedPointList"][cmb,scheme] shows the evolution of cmb to its fixed point using S and K combinator transformation rules in matches found by scheme at each step. | |
ResourceFunction["CombinatorFixedPointList"][rules, cmb,scheme] shows evolution cmb to its fixed point using rules in matches found by scheme at each step. |
MaxSteps | Infinity | maximum steps to take in evolving cmb |
"MaxSize" | Infinity | maximum leaf count allowed for evolution of cmb |
"SKGlyphs" | {CombinatorS,CombinatorK} | symbols used to specify default transformation rules |
Show steps of the fixed point evolution of a combinator expression using the default single leftmost-outermost update with S and K combinator transformation rules:
In[1]:= | ![]() |
Out[1]= | ![]() |
Specify the update scheme and only use the K combinator transformation rule to show the fixed-point evolution of the combinator expression:
In[2]:= | ![]() |
Out[2]= | ![]() |
Calculate the leaf count of each expression generated during an evolution:
In[3]:= | ![]() |
Out[3]= | ![]() |
Show the steps of the fixed-point evolution of a combinator expression using the default single leftmost-outermost update with S and K combinator transformation rules:
In[4]:= | ![]() |
In[5]:= | ![]() |
Out[5]= | ![]() |
One can show a similar fixed-point evolution using ReplaceAll in FixedPointList, which performs all non-overlapping updates in leftmost-outermost order:
In[6]:= | ![]() |
Out[6]= | ![]() |
If the option values for "MaxSize" or "MaxSteps" are surpassed, the returned evolution ends before reaching a fixed point:
In[7]:= | ![]() |
Out[7]= | ![]() |
In[8]:= | ![]() |
Out[8]= | ![]() |
This work is licensed under a Creative Commons Attribution 4.0 International License