Wolfram Function Repository
Instant-use add-on functions for the Wolfram Language
Function Repository Resource:
Convert between different combinator formats
| ResourceFunction["CombinatorConvert"][cmb,format] converts a combinator expression cmb to the specified format. | |
| ResourceFunction["CombinatorConvert"][transform] interconverts a combinator transformation rule transform between the RuleDelayed and Function formats. | |
| ResourceFunction["CombinatorConvert"][transform,name] interconverts a combinator transformation rule transform using the symbol name to designate the combinator on the left-hand side when converting to RuleDelayed. | 
| "Application" | combinator represented in terms of Application,S  (K  (S  I))  (S  (K  K)  I)  x  y | 
| "List" | combinator represented as a list, {{{{S, {K, {S,I}}}, {{S, {K,K}}, I}}, x}, y} | 
| "Nested" | combinator in nested bracket format, S[K[S[I]]][S[K[K]][I]][x][y] | 
| "String" | combinator represented as a left-associative string, "S(K(SI))(S(KK)I)xy" | 
 body), then ResourceFunction["CombinatorConvert"] will return a RuleDelayed.
 body), then ResourceFunction["CombinatorConvert"] will return a RuleDelayed.Convert a combinator expression in application format to each of the possible formats:
| In[1]:= | ![ResourceFunction["CombinatorConvert"][
 CombinatorS\[Application](CombinatorK\[Application]CombinatorS)\[Application]CombinatorK, "Application"]](https://www.wolframcloud.com/obj/resourcesystem/images/744/744428ff-f277-4d43-8768-536762681aaf/2cb735ddc19b458e.png) | 
| Out[1]= |  | 
| In[2]:= | ![ResourceFunction["CombinatorConvert"][
 CombinatorS\[Application](CombinatorK\[Application]CombinatorS)\[Application]CombinatorK, "List"]](https://www.wolframcloud.com/obj/resourcesystem/images/744/744428ff-f277-4d43-8768-536762681aaf/706625688a768bf2.png) | 
| Out[2]= |  | 
| In[3]:= | ![ResourceFunction["CombinatorConvert"][
 CombinatorS\[Application](CombinatorK\[Application]CombinatorS)\[Application]CombinatorK, "Nested"]](https://www.wolframcloud.com/obj/resourcesystem/images/744/744428ff-f277-4d43-8768-536762681aaf/412cbe0b53d91238.png) | 
| Out[3]= |  | 
| In[4]:= | ![ResourceFunction["CombinatorConvert"][
 CombinatorS\[Application](CombinatorK\[Application]CombinatorS)\[Application]CombinatorK, "String"]](https://www.wolframcloud.com/obj/resourcesystem/images/744/744428ff-f277-4d43-8768-536762681aaf/6bce977bdeb7e72b.png) | 
| Out[4]= |  | 
Convert a combinator expression in nested bracket format to each of the possible formats:
| In[5]:= | ![ResourceFunction["CombinatorConvert"][
 CombinatorS[
  CombinatorS[CombinatorK[CombinatorS]][CombinatorK]], "Application"]](https://www.wolframcloud.com/obj/resourcesystem/images/744/744428ff-f277-4d43-8768-536762681aaf/04408dbe176fbd44.png) | 
| Out[5]= |  | 
| In[6]:= | ![ResourceFunction["CombinatorConvert"][
 CombinatorS[
  CombinatorS[CombinatorK[CombinatorS]][CombinatorK]], "List"]](https://www.wolframcloud.com/obj/resourcesystem/images/744/744428ff-f277-4d43-8768-536762681aaf/6efd4f6847f051a1.png) | 
| Out[6]= |  | 
| In[7]:= | ![ResourceFunction["CombinatorConvert"][
 CombinatorS[
  CombinatorS[CombinatorK[CombinatorS]][CombinatorK]], "Nested"]](https://www.wolframcloud.com/obj/resourcesystem/images/744/744428ff-f277-4d43-8768-536762681aaf/1ce10f4ec0f1e483.png) | 
| Out[7]= |  | 
| In[8]:= | ![ResourceFunction["CombinatorConvert"][
 CombinatorS[
  CombinatorS[CombinatorK[CombinatorS]][CombinatorK]], "String"]](https://www.wolframcloud.com/obj/resourcesystem/images/744/744428ff-f277-4d43-8768-536762681aaf/1d9a18e5fe49ab3a.png) | 
| Out[8]= |  | 
Convert a combinator expression in list format to each of the possible formats:
| In[9]:= | ![ResourceFunction[
 "CombinatorConvert"][{{CombinatorS, {CombinatorK, {CombinatorS, {{CombinatorS, CombinatorK}, CombinatorK}}}}, CombinatorK}, "Application"]](https://www.wolframcloud.com/obj/resourcesystem/images/744/744428ff-f277-4d43-8768-536762681aaf/74083361313aa03d.png) | 
| Out[9]= |  | 
| In[10]:= | ![ResourceFunction[
 "CombinatorConvert"][{{CombinatorS, {CombinatorK, {CombinatorS, {{CombinatorS, CombinatorK}, CombinatorK}}}}, CombinatorK}, "List"]](https://www.wolframcloud.com/obj/resourcesystem/images/744/744428ff-f277-4d43-8768-536762681aaf/144c0b5a814f2fbe.png) | 
| Out[10]= |  | 
| In[11]:= | ![ResourceFunction[
 "CombinatorConvert"][{{CombinatorS, {CombinatorK, {CombinatorS, {{CombinatorS, CombinatorK}, CombinatorK}}}}, CombinatorK}, "Nested"]](https://www.wolframcloud.com/obj/resourcesystem/images/744/744428ff-f277-4d43-8768-536762681aaf/1626e0fb34eb845d.png) | 
| Out[11]= |  | 
| In[12]:= | ![ResourceFunction[
 "CombinatorConvert"][{{CombinatorS, {CombinatorK, {CombinatorS, {{CombinatorS, CombinatorK}, CombinatorK}}}}, CombinatorK}, "String"]](https://www.wolframcloud.com/obj/resourcesystem/images/744/744428ff-f277-4d43-8768-536762681aaf/51b3580bbcf1387a.png) | 
| Out[12]= |  | 
Convert a combinator expression in list format to each of the possible formats (note that the conversion from string format only allows single-character symbols, so combinator glyphs would need to be inserted retroactively):
| In[13]:= | ![ResourceFunction["CombinatorConvert"]["S(SS)S(SK)", "Application"] /. {S -> CombinatorS, K -> CombinatorK}](https://www.wolframcloud.com/obj/resourcesystem/images/744/744428ff-f277-4d43-8768-536762681aaf/2d9a6831f4f04e80.png) | 
| Out[13]= |  | 
| In[14]:= | ![ResourceFunction["CombinatorConvert"]["S(SS)S(SK)", "List"] /. {S -> CombinatorS, K -> CombinatorK}](https://www.wolframcloud.com/obj/resourcesystem/images/744/744428ff-f277-4d43-8768-536762681aaf/002d94c151149f4c.png) | 
| Out[14]= |  | 
| In[15]:= | ![ResourceFunction["CombinatorConvert"]["S(SS)S(SK)", "Nested"] /. {S -> CombinatorS, K -> CombinatorK}](https://www.wolframcloud.com/obj/resourcesystem/images/744/744428ff-f277-4d43-8768-536762681aaf/06b2e2a1f9a6a28a.png) | 
| Out[15]= |  | 
| In[16]:= | ![ResourceFunction["CombinatorConvert"]["S(SS)S(SK)", "String"]](https://www.wolframcloud.com/obj/resourcesystem/images/744/744428ff-f277-4d43-8768-536762681aaf/1743111e8b895409.png) | 
| Out[16]= |  | 
Convert between the RuleDelayed and Function formats of the CombinatorB transformation:
| In[17]:= | ![ResourceFunction["CombinatorConvert"][
 CombinatorB[a_][b_][c_] :> a[b[c]]]](https://www.wolframcloud.com/obj/resourcesystem/images/744/744428ff-f277-4d43-8768-536762681aaf/116475bb9df216ff.png) | 
| Out[17]= |  | 
| In[18]:= | ![ResourceFunction["CombinatorConvert"][{a, b, c} |-> a[b[c]]]](https://www.wolframcloud.com/obj/resourcesystem/images/744/744428ff-f277-4d43-8768-536762681aaf/1a4a65cce499ed74.png) | 
| Out[18]= |  | 
When converting from Function to RuleDelayed, a second argument must be supplied for the correct symbol to appear on the left-hand side:
| In[19]:= | ![ResourceFunction[
 "CombinatorConvert"][{a, b, c} |-> a[b[c]], CombinatorB]](https://www.wolframcloud.com/obj/resourcesystem/images/744/744428ff-f277-4d43-8768-536762681aaf/7281e586fc956421.png) | 
| Out[19]= |  | 
Input strings containing any symbol other than letters, digits or parentheses are currently not supported:
| In[20]:= | ![ResourceFunction["CombinatorConvert"][
   "S\[Application](S\[Application]S)\[Application]S\[Application](S\[Application]K)", #] & /@ {"Application", "List", "Nested", "String"}](https://www.wolframcloud.com/obj/resourcesystem/images/744/744428ff-f277-4d43-8768-536762681aaf/400d411bdbfb2be3.png) | 
| Out[20]= |  | 
Input strings must be in left-associative format:
| In[21]:= | ![ResourceFunction["CombinatorConvert"][
   "((SSS)S)SK", #] & /@ {"Application", "List", "Nested", "String"}](https://www.wolframcloud.com/obj/resourcesystem/images/744/744428ff-f277-4d43-8768-536762681aaf/47135fe9af3d3656.png) | 
| Out[21]= |  | 
A combinator transformation must be a RuleDelayed or Function object:
| In[22]:= | ![ResourceFunction["CombinatorConvert"][
 CombinatorS[CombinatorS[CombinatorK]]]](https://www.wolframcloud.com/obj/resourcesystem/images/744/744428ff-f277-4d43-8768-536762681aaf/14459503370b17a5.png) | 
| Out[22]= |  | 
This work is licensed under a Creative Commons Attribution 4.0 International License