Knowledge (XXG)

CEK Machine

Source πŸ“

2141:. The converse derivation (closure conversion, CPS transformation, and defunctionalization) is documented in John Reynolds's article "Definitional Interpreters for Higher-Order Programming Languages", which is the origin of the CEK machine and was subsequently identified as a blueprint for transforming compositional evaluators into abstract machines as well as vice versa. 202:
The CS machine contains just a control statement and a store. It is also described by the original paper. In an application, instead of putting variables into an environment it substitutes them with an address on the store and putting the value of the variable in that address. The continuation is not
157:
Each component of the CEK machine has various representations. The control string is usually a term being evaluated, or sometimes, a line number. For example, a CEK machine evaluating the lambda calculus would use a lambda expression as a control string. The environment is almost always a map from
58:
The CEK machine builds on the SECD machine by replacing the dump (call stack) with the more advanced continuation, and putting parameters directly into the environment, rather than pushing them on to the parameter stack first. Other modifications can be made which creates a whole family of related
221:
The SECD machine was the machine that CEK machine was based on. It has a stack, environment, control statement and dump. The dump is a call stack, and is used instead of a continuation. The stack is used for passing parameters to functions. The control statement was written in
51:. The control statement is the term being evaluated at that moment, the environment is (usually) a map from variable names to values, and the continuation stores another state, or a special halt case. It is a simplified form of another abstract machine called the 63:
has the environment map variables to a pointer on the store, which is effectively a heap. This allows it to model mutable state better than the ordinary CEK machine. The CK machine has no environment, and can be used for simple calculi without variables.
2238:
They differ on how they behave with respect to applications: the CEK implements left-to-right call-by-value, i.e. it first evaluates the function part, the LAM gives instead precedence to arguments, realizing right-to-left
158:
variables to values, or in the case of CESK machines, variables to addresses in the store. The representation of the continuation varies. It often contains another environment as well as a continuation type, for example
76:. Its environment maps variables to closures and the continuations are either a halt, a continuation to evaluate an argument (ar), or a continuation to evaluate an application after evaluating a function (ap): 2660:. Implementation and Application of Functional Languages, 16th International Workshop, IFL 2004, Revised Selected Papers, Lecture Notes in Computer Science 3474, Springer. pp. 52–71. 2187: 2617:. Lecture Notes in Computer Science. Vol. 2986. Programming Languages and Systems, 13th European Symposium on Programming, ESOP 2004, LNCS 2986, Springer. pp. 279–293. 1430:, where the domain of answers is polymorphic, i.e., is implemented with a type variable. This continuation-passing implementation is mapped back to direct style as follows: 2527: 2475: 272: 1758:
This direct-style implementation is also in defunctionalized form, or more precisely in closure-converted form. Here is the result of closure-unconverting it:
72:
A CEK machine can be created for any programming language so the term is often used vaguely. For example, a CEK machine could be created to interpret the
2320: 2632: 2300: 2262: 2231: 2122:) and where syntactic functions are defined as semantic functions and syntactic applications are defined as semantic applications ( 348: 182:
The CESK machine is another machine closely related to the CEK machine. The environment in a CESK machine maps variables to
2111: 166:. It is sometimes a call stack, where each frame is the rest of the state, i.e. a control statement and an environment. 2698:(13). 5th International ACM SIGPLAN Conference on Principles and Practice of Declarative Programming (PPDP'03): 8–19. 2480:. Formal Description of Programming Concepts III, Elsevier Science Publishers B.V. (North-Holland). pp. 193–217. 2830: 1427: 2759:
Formally verified derivation of an executable and terminating CEK machine from call-by-value lambda-p-hat-calculus
289:
To wit, here is an implementation of the CEK machine in OCaml, representing lambda terms with de Bruijn indices:
194:. This makes it much more useful for interpreting imperative programming languages, rather than functional ones. 2160: 2254:
Semantics and Algebraic Specification: Essays Dedicated to Peter D. Mosses on the Occasion of His 60th Birthday
2154: 2115: 44: 40: 2327: 2214:
Accattoli, Beniamino; Barenbaum, Pablo; Mazza, Damiano (19 August 2014), "Distilling abstract machines",
2190: 2406: 2282: 186:, on a "store" (heap) hence the name "CESK". It can be used to model mutable state, for example the Ξ› 2779:; Millikin, Kevin (2008). "A rational deconstruction of Landin's SECD machine with the J operator". 988: 2806: 2788: 2595: 2503: 2499: 2451: 2447: 2361: 2357: 2278: 2157:(via a left-to-right call-by-value CPS transformation), it also syntactically corresponds to the 279: 275: 32: 28: 999:
as the first-order representation of a continuation. Here is its refunctionalized counterpart:
2661: 2628: 2512: 2460: 2296: 2290: 2258: 2252: 2227: 257: 226:, and the machine had its own "programming language". A lambda calculus statement like this: 2798: 2736: 2699: 2618: 2587: 2575: 2557: 2549: 2481: 2219: 283: 223: 24: 2382: 2365: 2150: 286:'s Interpreter III in "Definitional Interpreters for Higher-Order Programming Languages". 204: 191: 73: 2613:
Thielecke, Hayo (2004). "Answer Type Polymorphism in Call-by-Name Continuation Passing".
2216:
Proceedings of the 19th ACM SIGPLAN international conference on Functional programming
282:
wrote "The machine is derived from Reynolds' extended interpreter IV.", referring to
2824: 2776: 2720: 2683: 2648: 2286: 2130: 2123: 36: 2599: 2810: 2802: 2652: 2507: 2194: 2193:-- with a left-to-right applicative-order reduction strategy, and likewise for the 2138: 2134: 356: 216: 52: 48: 2623: 2485: 2757: 2704: 2687: 2455: 2423: 2741: 2724: 2591: 2556:. Vol. 2. Proceedings of 25th ACM National Conference. pp. 717–740. 2119: 2665: 2552:(1972). "Definitional Interpreters for Higher-Order Programming Languages". 2535:(Technical report). Department of Computer Science, Indiana University. 197. 2223: 352: 2561: 47:. A state in a CEK machine includes a control statement, environment and 2688:"A Functional Correspondence between Evaluators and Abstract Machines" 274:-Calculus", and on page 4 of the technical report with the same name, 2793: 174:
There are some other machines closely linked to the CEK machine.
254:
On page 196 of "Control Operators, the SECD Machine, and the
2321:"Implementing functional languages with abstract machines" 2257:. Springer Science & Business Media. pp. 162–. 2197:(via a right-to-left call-by-value CPS transformation). 207:; it does not need to remember to evaluate an argument. 2366:"A Calculus for Assignments in Higher-Order Languages" 246:
is a function that applies two abstractions together.
2554:
Proceedings of the ACM annual conference on - ACM '72
2515: 2463: 2163: 260: 39:. It is generally implemented as an interpreter for 2654:A Rational Deconstruction of Landin's SECD Machine 2521: 2469: 2181: 266: 2677: 2675: 2725:"A Concrete Framework for Environment Machines" 2578:(1998). "Definitional Interpreters Revisited". 2544: 2542: 2509:Control Operators, the SECD Machine, and the 2457:Control Operators, the SECD Machine, and the 2153:, does not only functionally correspond to a 8: 43:, but can also be used to implement simple 2182:{\displaystyle \lambda {\widehat {\rho }}} 2792: 2740: 2703: 2622: 2514: 2462: 2168: 2167: 2162: 2118:where the domain of values is reflexive ( 259: 1426:This implementation is in left-to-right 78: 2729:ACM Transactions on Computational Logic 2206: 140:Abstraction while evaluating argument 129:Abstraction while evaluating function 2580:Higher-Order and Symbolic Computation 7: 2765:(Thesis). University of Southampton. 2682:Ager, Mads Sig; Biernacki, Dariusz; 2352: 2350: 2348: 2319:Thielecke, Hayo (December 9, 2015). 2314: 2312: 2292:Semantics Engineering with PLT Redex 2781:Logical Methods in Computer Science 14: 2615:Programming Languages and Systems 2189:calculus -- a calculus that uses 60: 2383:"A refresher on the CEK machine" 2251:Jens Palsberg (28 August 2009). 2110:The resulting implementation is 107:, E', K where closure(t,E') = E 45:imperative programming languages 41:functional programming languages 2114:. It is the usual Scott-Tarski 2133:'s rational deconstruction of 35:that implements left-to-right 1: 2116:definitional self-interpreter 2624:10.1007/978-3-540-24725-8_20 2486:10.1007/978-3-319-14125-1_13 2295:. MIT Press. pp. 113–. 234:would be written like this: 153:Representation of components 2756:Rozowski, Wojciech (2021). 59:machines. For example, the 2847: 2705:10.7146/brics.v10i13.21783 2407:"The SECD Virtual Machine" 2149:The CEK machine, like the 1428:continuation-passing style 987:This implementation is in 214: 190:calculus described in the 143:Abs, E, ap(Ξ»x.Exp, E', K) 16:Theoretical computer model 2742:10.7146/brics.v13i3.21909 2686:; Midtgaard, Jan (2003). 2218:, ACM, pp. 363–376, 2803:10.2168/LMCS-4(4:12)2008 2522:{\displaystyle \lambda } 2470:{\displaystyle \lambda } 1760: 1432: 1001: 361: 291: 267:{\displaystyle \lambda } 2735:(1). Article #6: 1–30. 2719:Biernacka, MaΕ‚gorzata; 2592:10.1023/A:1010075320153 2224:10.1145/2628136.2628154 2155:meta-circular evaluator 2129:This derivation mimics 2523: 2471: 2183: 268: 2562:10.1145/800194.805852 2524: 2472: 2387:CMSC 330, Summer 2015 2283:Findler, Robert Bruce 2191:explicit substitution 2184: 989:defunctionalized form 312:(* de Bruijn index *) 269: 203:needed because it is 135:t, E', ap(Abs, E, K) 132:Abs, E, ar(t, E', K) 2513: 2506:, Daniel P. (1986). 2461: 2161: 258: 2692:Brics Report Series 2448:Felleisen, Matthias 2362:Friedman, Daniel P. 2358:Felleisen, Matthias 2279:Felleisen, Matthias 80: 2651:, Olivier (2004). 2519: 2467: 2179: 280:Daniel P. Friedman 276:Matthias Felleisen 264: 79: 33:Daniel P. Friedman 29:Matthias Felleisen 2831:Abstract machines 2634:978-3-540-21313-0 2576:Reynolds, John C. 2550:Reynolds, John C. 2428:www.cs.bath.ac.uk 2302:978-0-262-25817-3 2264:978-3-642-04163-1 2176: 150: 149: 124:, E, ar(e, E, K) 2838: 2815: 2814: 2796: 2773: 2767: 2766: 2764: 2753: 2747: 2746: 2744: 2716: 2710: 2709: 2707: 2679: 2670: 2669: 2659: 2645: 2639: 2638: 2626: 2610: 2604: 2603: 2572: 2566: 2565: 2546: 2537: 2536: 2534: 2528: 2526: 2525: 2520: 2496: 2490: 2489: 2476: 2474: 2473: 2468: 2452:Friedman, Daniel 2444: 2438: 2437: 2435: 2434: 2420: 2414: 2413: 2411: 2403: 2397: 2396: 2394: 2393: 2379: 2373: 2372: 2370: 2364:(October 1986). 2354: 2343: 2342: 2340: 2338: 2332: 2326:. Archived from 2325: 2316: 2307: 2306: 2289:(10 July 2009). 2275: 2269: 2268: 2248: 2242: 2241: 2211: 2188: 2186: 2185: 2180: 2178: 2177: 2169: 2106: 2103: 2100: 2097: 2094: 2091: 2088: 2085: 2082: 2079: 2076: 2073: 2070: 2067: 2064: 2061: 2058: 2055: 2052: 2049: 2046: 2043: 2040: 2037: 2034: 2031: 2028: 2025: 2022: 2019: 2016: 2013: 2010: 2007: 2004: 2001: 1998: 1995: 1992: 1989: 1986: 1983: 1980: 1977: 1974: 1971: 1968: 1965: 1962: 1959: 1956: 1953: 1950: 1947: 1944: 1941: 1938: 1935: 1932: 1929: 1926: 1923: 1920: 1917: 1914: 1911: 1908: 1905: 1902: 1899: 1896: 1893: 1890: 1887: 1884: 1881: 1878: 1875: 1872: 1869: 1866: 1863: 1860: 1857: 1854: 1851: 1848: 1845: 1842: 1839: 1836: 1833: 1830: 1827: 1824: 1821: 1818: 1815: 1812: 1809: 1806: 1803: 1800: 1797: 1794: 1791: 1788: 1785: 1782: 1779: 1776: 1773: 1770: 1767: 1764: 1754: 1751: 1748: 1745: 1742: 1739: 1736: 1733: 1730: 1727: 1724: 1721: 1718: 1715: 1712: 1709: 1706: 1703: 1700: 1697: 1694: 1691: 1688: 1685: 1682: 1679: 1676: 1673: 1670: 1667: 1664: 1661: 1658: 1655: 1652: 1649: 1646: 1643: 1640: 1637: 1634: 1631: 1628: 1625: 1622: 1619: 1616: 1613: 1610: 1607: 1604: 1601: 1598: 1595: 1592: 1589: 1586: 1583: 1580: 1577: 1574: 1571: 1568: 1565: 1562: 1559: 1556: 1553: 1550: 1547: 1544: 1541: 1538: 1535: 1532: 1529: 1526: 1523: 1520: 1517: 1514: 1511: 1508: 1505: 1502: 1499: 1496: 1493: 1490: 1487: 1484: 1481: 1478: 1475: 1472: 1469: 1466: 1463: 1460: 1457: 1454: 1451: 1448: 1445: 1442: 1439: 1436: 1422: 1419: 1416: 1413: 1410: 1407: 1404: 1401: 1398: 1395: 1392: 1389: 1386: 1383: 1380: 1377: 1374: 1371: 1368: 1365: 1362: 1359: 1356: 1353: 1350: 1347: 1344: 1341: 1338: 1335: 1332: 1329: 1326: 1323: 1320: 1317: 1314: 1311: 1308: 1305: 1302: 1299: 1296: 1293: 1290: 1287: 1284: 1281: 1278: 1275: 1272: 1269: 1266: 1263: 1260: 1257: 1254: 1251: 1248: 1245: 1242: 1239: 1236: 1233: 1230: 1227: 1224: 1221: 1218: 1215: 1212: 1209: 1206: 1203: 1200: 1197: 1194: 1191: 1188: 1185: 1182: 1179: 1176: 1173: 1170: 1167: 1164: 1161: 1158: 1155: 1152: 1149: 1146: 1143: 1140: 1137: 1134: 1131: 1128: 1125: 1122: 1119: 1116: 1113: 1110: 1107: 1104: 1101: 1098: 1095: 1092: 1089: 1086: 1083: 1080: 1077: 1074: 1071: 1068: 1065: 1062: 1059: 1056: 1053: 1050: 1047: 1044: 1041: 1038: 1035: 1032: 1029: 1026: 1023: 1020: 1017: 1014: 1011: 1008: 1005: 998: 994: 983: 980: 977: 974: 971: 968: 965: 962: 959: 956: 953: 950: 947: 944: 941: 938: 935: 932: 929: 926: 923: 920: 917: 914: 911: 908: 905: 902: 899: 896: 893: 890: 887: 884: 881: 878: 875: 872: 869: 866: 863: 860: 857: 854: 851: 848: 845: 842: 839: 836: 833: 830: 827: 824: 821: 818: 815: 812: 809: 806: 803: 800: 797: 794: 791: 788: 785: 782: 779: 776: 773: 770: 767: 764: 761: 758: 755: 752: 749: 746: 743: 740: 737: 734: 731: 728: 725: 722: 719: 716: 713: 710: 707: 704: 701: 698: 695: 692: 689: 686: 683: 680: 677: 674: 671: 668: 665: 662: 659: 656: 653: 650: 647: 644: 641: 638: 635: 632: 629: 626: 623: 620: 617: 614: 611: 608: 605: 602: 599: 596: 593: 590: 587: 584: 581: 578: 575: 572: 569: 566: 563: 560: 557: 554: 551: 548: 545: 542: 539: 536: 533: 530: 527: 524: 521: 518: 515: 512: 509: 506: 503: 500: 497: 494: 491: 488: 485: 482: 479: 476: 473: 470: 467: 464: 461: 458: 455: 452: 449: 446: 443: 440: 437: 434: 431: 428: 425: 422: 419: 416: 413: 410: 407: 404: 401: 398: 395: 392: 389: 386: 383: 380: 377: 374: 371: 368: 365: 343: 340: 337: 334: 331: 328: 325: 322: 319: 316: 313: 310: 307: 304: 301: 298: 295: 273: 271: 270: 265: 224:postfix notation 205:lazily evaluated 170:Related machines 81: 25:abstract machine 2846: 2845: 2841: 2840: 2839: 2837: 2836: 2835: 2821: 2820: 2819: 2818: 2775: 2774: 2770: 2762: 2755: 2754: 2750: 2718: 2717: 2713: 2681: 2680: 2673: 2657: 2647: 2646: 2642: 2635: 2612: 2611: 2607: 2574: 2573: 2569: 2548: 2547: 2540: 2532: 2511: 2510: 2498: 2497: 2493: 2459: 2458: 2446: 2445: 2441: 2432: 2430: 2422: 2421: 2417: 2409: 2405: 2404: 2400: 2391: 2389: 2381: 2380: 2376: 2368: 2356: 2355: 2346: 2336: 2334: 2330: 2323: 2318: 2317: 2310: 2303: 2277: 2276: 2272: 2265: 2250: 2249: 2245: 2234: 2213: 2212: 2208: 2203: 2159: 2158: 2151:Krivine machine 2147: 2108: 2107: 2104: 2101: 2098: 2095: 2092: 2089: 2086: 2083: 2080: 2077: 2074: 2071: 2068: 2065: 2062: 2059: 2056: 2053: 2050: 2047: 2044: 2041: 2038: 2035: 2032: 2029: 2026: 2023: 2020: 2017: 2014: 2011: 2008: 2005: 2002: 1999: 1996: 1993: 1990: 1987: 1984: 1981: 1978: 1975: 1972: 1969: 1966: 1963: 1960: 1957: 1954: 1951: 1948: 1945: 1942: 1939: 1936: 1933: 1930: 1927: 1924: 1921: 1918: 1915: 1912: 1909: 1906: 1903: 1900: 1897: 1894: 1891: 1888: 1885: 1882: 1879: 1876: 1873: 1870: 1867: 1864: 1861: 1858: 1855: 1852: 1849: 1846: 1843: 1840: 1837: 1834: 1831: 1828: 1825: 1822: 1819: 1816: 1813: 1810: 1807: 1804: 1801: 1798: 1795: 1792: 1789: 1786: 1783: 1780: 1777: 1774: 1771: 1768: 1765: 1762: 1756: 1755: 1752: 1749: 1746: 1743: 1740: 1737: 1734: 1731: 1728: 1725: 1722: 1719: 1716: 1713: 1710: 1707: 1704: 1701: 1698: 1695: 1692: 1689: 1686: 1683: 1680: 1677: 1674: 1671: 1668: 1665: 1662: 1659: 1656: 1653: 1650: 1647: 1644: 1641: 1638: 1635: 1632: 1629: 1626: 1623: 1620: 1617: 1614: 1611: 1608: 1605: 1602: 1599: 1596: 1593: 1590: 1587: 1584: 1581: 1578: 1575: 1572: 1569: 1566: 1563: 1560: 1557: 1554: 1551: 1548: 1545: 1542: 1539: 1536: 1533: 1530: 1527: 1524: 1521: 1518: 1515: 1512: 1509: 1506: 1503: 1500: 1497: 1494: 1491: 1488: 1485: 1482: 1479: 1476: 1473: 1470: 1467: 1464: 1461: 1458: 1455: 1452: 1449: 1446: 1443: 1440: 1437: 1434: 1424: 1423: 1420: 1417: 1414: 1411: 1408: 1405: 1402: 1399: 1396: 1393: 1390: 1387: 1384: 1381: 1378: 1375: 1372: 1369: 1366: 1363: 1360: 1357: 1354: 1351: 1348: 1345: 1342: 1339: 1336: 1333: 1330: 1327: 1324: 1321: 1318: 1315: 1312: 1309: 1306: 1303: 1300: 1297: 1294: 1291: 1288: 1285: 1282: 1279: 1276: 1273: 1270: 1267: 1264: 1261: 1258: 1255: 1252: 1249: 1246: 1243: 1240: 1237: 1234: 1231: 1228: 1225: 1222: 1219: 1216: 1213: 1210: 1207: 1204: 1201: 1198: 1195: 1192: 1189: 1186: 1183: 1180: 1177: 1174: 1171: 1168: 1165: 1162: 1159: 1156: 1153: 1150: 1147: 1144: 1141: 1138: 1135: 1132: 1129: 1126: 1123: 1120: 1117: 1114: 1111: 1108: 1105: 1102: 1099: 1096: 1093: 1090: 1087: 1084: 1081: 1078: 1075: 1072: 1069: 1066: 1063: 1060: 1057: 1054: 1051: 1048: 1045: 1042: 1039: 1036: 1033: 1030: 1027: 1024: 1021: 1018: 1015: 1012: 1009: 1006: 1003: 996: 992: 985: 984: 981: 978: 975: 972: 969: 966: 963: 960: 957: 954: 951: 948: 945: 942: 939: 936: 933: 930: 927: 924: 921: 918: 915: 912: 909: 906: 903: 900: 897: 894: 891: 888: 885: 882: 879: 876: 873: 870: 867: 864: 861: 858: 855: 852: 849: 846: 843: 840: 837: 834: 831: 828: 825: 822: 819: 816: 813: 810: 807: 804: 801: 798: 795: 792: 789: 786: 783: 780: 777: 774: 771: 768: 765: 762: 759: 756: 753: 750: 747: 744: 741: 738: 735: 732: 729: 726: 723: 720: 717: 714: 711: 708: 705: 702: 699: 696: 693: 690: 687: 684: 681: 678: 675: 672: 669: 666: 663: 660: 657: 654: 651: 648: 645: 642: 639: 636: 633: 630: 627: 624: 621: 618: 615: 612: 609: 606: 603: 600: 597: 594: 591: 588: 585: 582: 579: 576: 573: 570: 567: 564: 561: 558: 555: 552: 549: 546: 543: 540: 537: 534: 531: 528: 525: 522: 519: 516: 513: 510: 507: 504: 501: 498: 495: 492: 489: 486: 483: 480: 477: 474: 471: 468: 465: 462: 459: 456: 453: 450: 447: 444: 441: 438: 435: 432: 429: 426: 423: 420: 417: 414: 411: 408: 405: 402: 399: 396: 393: 390: 387: 384: 381: 378: 375: 372: 369: 366: 363: 345: 344: 341: 338: 335: 332: 329: 326: 323: 320: 317: 314: 311: 308: 305: 302: 299: 296: 293: 256: 255: 252: 219: 213: 200: 189: 180: 172: 155: 74:lambda calculus 70: 17: 12: 11: 5: 2844: 2842: 2834: 2833: 2823: 2822: 2817: 2816: 2777:Danvy, Olivier 2768: 2748: 2721:Danvy, Olivier 2711: 2684:Danvy, Olivier 2671: 2640: 2633: 2605: 2586:(4): 355–361. 2567: 2538: 2518: 2491: 2466: 2439: 2415: 2398: 2374: 2344: 2308: 2301: 2287:Flatt, Matthew 2270: 2263: 2243: 2239:call-by-value. 2232: 2205: 2204: 2202: 2199: 2175: 2172: 2166: 2146: 2143: 1761: 1433: 1002: 362: 292: 263: 251: 248: 215:Main article: 212: 209: 199: 196: 192:original paper 187: 179: 176: 171: 168: 154: 151: 148: 147: 144: 141: 137: 136: 133: 130: 126: 125: 119: 113: 109: 108: 102: 96: 92: 91: 88: 85: 69: 66: 15: 13: 10: 9: 6: 4: 3: 2: 2843: 2832: 2829: 2828: 2826: 2812: 2808: 2804: 2800: 2795: 2790: 2786: 2782: 2778: 2772: 2769: 2761: 2760: 2752: 2749: 2743: 2738: 2734: 2730: 2726: 2722: 2715: 2712: 2706: 2701: 2697: 2693: 2689: 2685: 2678: 2676: 2672: 2667: 2663: 2656: 2655: 2650: 2644: 2641: 2636: 2630: 2625: 2620: 2616: 2609: 2606: 2601: 2597: 2593: 2589: 2585: 2581: 2577: 2571: 2568: 2563: 2559: 2555: 2551: 2545: 2543: 2539: 2531: 2530: 2516: 2505: 2501: 2495: 2492: 2487: 2483: 2479: 2478: 2464: 2453: 2449: 2443: 2440: 2429: 2425: 2419: 2416: 2408: 2402: 2399: 2388: 2384: 2378: 2375: 2367: 2363: 2359: 2353: 2351: 2349: 2345: 2333:on 2021-07-17 2329: 2322: 2315: 2313: 2309: 2304: 2298: 2294: 2293: 2288: 2284: 2280: 2274: 2271: 2266: 2260: 2256: 2255: 2247: 2244: 2240: 2235: 2233:9781450328739 2229: 2225: 2221: 2217: 2210: 2207: 2200: 2198: 2196: 2192: 2173: 2170: 2164: 2156: 2152: 2144: 2142: 2140: 2136: 2132: 2127: 2125: 2121: 2117: 2113: 2112:compositional 1759: 1431: 1429: 1000: 990: 360: 358: 354: 350: 290: 287: 285: 284:John Reynolds 281: 277: 261: 249: 247: 245: 240: 239: 235: 232: 231: 227: 225: 218: 210: 208: 206: 197: 195: 193: 185: 177: 175: 169: 167: 165: 161: 152: 145: 142: 139: 138: 134: 131: 128: 127: 123: 120: 117: 114: 111: 110: 106: 103: 100: 97: 94: 93: 89: 86: 83: 82: 77: 75: 67: 65: 62: 56: 54: 50: 46: 42: 38: 37:call by value 34: 30: 26: 22: 2784: 2780: 2771: 2758: 2751: 2732: 2728: 2714: 2695: 2691: 2653: 2643: 2614: 2608: 2583: 2579: 2570: 2553: 2508: 2502:, Matthias; 2494: 2456: 2442: 2431:. Retrieved 2427: 2418: 2401: 2390:. Retrieved 2386: 2377: 2337:September 9, 2335:. Retrieved 2328:the original 2291: 2273: 2253: 2246: 2237: 2215: 2209: 2195:SECD machine 2148: 2145:Modern times 2139:SECD machine 2128: 2109: 1757: 1425: 986: 357:Peter Landin 346: 288: 253: 243: 241: 237: 236: 233: 229: 228: 220: 217:SECD machine 211:SECD machine 201: 183: 181: 178:CESK machine 173: 163: 159: 156: 121: 115: 112:Application 104: 98: 71: 61:CESK machine 57: 53:SECD machine 49:continuation 27:invented by 20: 18: 2787:(4): 1–67. 347:Values are 164:application 146:Exp, E', K 84:Transition 68:Description 21:CEK Machine 2433:2020-09-23 2392:2020-09-19 2201:References 198:CS machine 2794:0811.3231 2666:0909-0878 2529:-Calculus 2517:λ 2500:Felleisen 2477:-Calculus 2465:λ 2174:^ 2171:ρ 2165:λ 262:λ 95:Variable 2825:Category 2723:(2007). 2600:34126862 2504:Friedman 2454:(1986). 997:continue 748:continue 709:continue 454:continue 353:invented 349:closures 184:pointers 160:argument 2811:7926360 991:, with 250:Origins 118:, E, K 101:, E, K 2809:  2664:  2631:  2598:  2424:"secd" 2299:  2261:  2230:  2135:Landin 2124:Tarski 1907:t' 1883:t' 1537:t' 1525:t' 1148:t' 1130:t' 763:t' 742:t' 242:where 238:N:M:ap 23:is an 2807:S2CID 2789:arXiv 2763:(PDF) 2658:(PDF) 2649:Danvy 2596:S2CID 2533:(PDF) 2410:(PDF) 2369:(PDF) 2331:(PDF) 2324:(PDF) 2131:Danvy 2120:Scott 2096:value 2036:value 2027:value 2012:value 2000:apply 1988:apply 1946:-> 1901:-> 1886:-> 1859:-> 1844:match 1838:value 1826:value 1787:value 1784:-> 1781:value 1766:value 1744:value 1660:value 1651:value 1636:value 1624:apply 1612:apply 1570:-> 1528:-> 1501:-> 1486:match 1480:value 1468:value 1415:-> 1394:value 1304:' 1292:' 1289:-> 1286:value 1271:value 1256:value 1244:apply 1226:apply 1223:-> 1202:-> 1181:-> 1133:-> 1097:-> 1082:match 1073:' 1061:' 1058:-> 1055:value 1037:value 970:value 865:value 850:value 838:apply 796:-> 745:-> 706:-> 691:match 685:value 658:value 622:-> 598:apply 595:-> 538:-> 496:match 490:value 481:value 433:value 412:value 385:value 367:value 351:, as 230:(M N) 116:(f e) 87:From 2662:ISSN 2629:ISBN 2339:2020 2297:ISBN 2259:ISBN 2228:ISBN 2102:eval 2087:term 2075:main 1976:eval 1958:eval 1904:eval 1862:List 1850:with 1829:list 1811:term 1799:eval 1763:type 1750:eval 1735:term 1723:main 1699:eval 1600:eval 1582:eval 1504:List 1492:with 1471:list 1453:term 1441:eval 1400:eval 1385:term 1373:main 1346:eval 1205:eval 1184:eval 1106:List 1088:with 1040:list 1022:term 1010:eval 995:and 993:cont 976:eval 961:term 949:main 922:eval 880:cont 799:eval 718:List 697:with 676:cont 661:list 643:term 631:eval 541:eval 508:with 466:cont 439:cont 421:cont 415:list 406:term 394:cont 391:type 388:list 379:term 364:type 342:term 336:term 324:term 297:term 294:type 278:and 31:and 2799:doi 2737:doi 2700:doi 2619:doi 2588:doi 2558:doi 2482:doi 2220:doi 2137:'s 2126:). 2072:let 2048:FUN 2042:let 1997:and 1967:and 1949:let 1928:APP 1895:fun 1889:FUN 1880:ABS 1868:nth 1853:IND 1796:rec 1793:let 1772:FUN 1720:let 1672:CLO 1666:let 1621:and 1591:and 1573:let 1552:APP 1531:CLO 1522:ABS 1510:nth 1495:IND 1438:rec 1435:let 1409:fun 1370:let 1319:CLO 1313:let 1241:and 1217:fun 1196:fun 1163:APP 1142:CLO 1127:ABS 1112:nth 1091:IND 1007:rec 1004:let 946:let 895:CLO 889:let 835:and 778:APP 757:CLO 739:ABS 724:nth 700:IND 628:and 451:rec 448:let 373:CLO 355:by 330:APP 318:ABS 309:int 303:IND 162:or 90:To 2827:: 2805:. 2797:. 2783:. 2731:. 2727:. 2696:10 2694:. 2690:. 2674:^ 2627:. 2594:. 2584:11 2582:. 2541:^ 2450:; 2426:. 2385:. 2360:; 2347:^ 2311:^ 2285:; 2281:; 2236:, 2226:, 2069:v1 2063:in 2060:v0 2021:v1 2006:v0 1994:v1 1991:v0 1985:in 1979:t1 1970:v1 1961:t0 1952:v0 1940:t1 1934:t0 1922:)) 1916::: 1775:of 1711::: 1708:v1 1696:in 1693:v0 1687:)) 1645:v1 1630:v0 1618:v1 1615:v0 1609:in 1603:t1 1594:v1 1585:t0 1576:v0 1564:t1 1558:t0 1358::: 1355:v1 1343:in 1340:v0 1334:)) 1265:v1 1250:v0 1238:)) 1232:v1 1229:v0 1220:v1 1208:t1 1199:v0 1187:t0 1175:t1 1169:t0 1157:)) 982:C0 934::: 931:v1 919:in 916:v0 910:)) 859:v1 844:v0 832:)) 817:t1 811:C2 802:t0 790:t1 784:t0 772:)) 613:C0 604:v1 601:v0 592:v1 589:), 580:v0 574:C1 568:)) 559:v0 553:C1 544:t1 535:v0 532:), 517:t1 511:C2 445:C0 430:of 427:C1 403:of 400:C2 376:of 359:: 333:of 321:of 306:of 244:ap 55:. 19:A 2813:. 2801:: 2791:: 2785:4 2745:. 2739:: 2733:9 2708:. 2702:: 2668:. 2637:. 2621:: 2602:. 2590:: 2564:. 2560:: 2488:. 2484:: 2436:. 2412:. 2395:. 2371:. 2341:. 2305:. 2267:. 2222:: 2105:t 2099:= 2093:: 2090:) 2084:: 2081:t 2078:( 2066:f 2057:= 2054:) 2051:f 2045:( 2039:= 2033:: 2030:) 2024:: 2018:( 2015:) 2009:: 2003:( 1982:e 1973:= 1964:e 1955:= 1943:) 1937:, 1931:( 1925:| 1919:e 1913:v 1910:( 1898:v 1892:( 1877:| 1874:n 1871:e 1865:. 1856:n 1847:t 1841:= 1835:: 1832:) 1823:: 1820:e 1817:( 1814:) 1808:: 1805:t 1802:( 1790:) 1778:( 1769:= 1753:t 1747:= 1741:: 1738:) 1732:: 1729:t 1726:( 1717:) 1714:e 1705:( 1702:t 1690:= 1684:e 1681:, 1678:t 1675:( 1669:( 1663:= 1657:: 1654:) 1648:: 1642:( 1639:) 1633:: 1627:( 1606:e 1597:= 1588:e 1579:= 1567:) 1561:, 1555:( 1549:| 1546:) 1543:e 1540:, 1534:( 1519:| 1516:n 1513:e 1507:. 1498:n 1489:t 1483:= 1477:: 1474:) 1465:: 1462:e 1459:( 1456:) 1450:: 1447:t 1444:( 1421:) 1418:v 1412:v 1406:( 1403:t 1397:= 1391:: 1388:) 1382:: 1379:t 1376:( 1367:k 1364:) 1361:e 1352:( 1349:t 1337:= 1331:e 1328:, 1325:t 1322:( 1316:( 1310:= 1307:a 1301:: 1298:) 1295:a 1283:: 1280:k 1277:( 1274:) 1268:: 1262:( 1259:) 1253:: 1247:( 1235:k 1214:( 1211:e 1193:( 1190:e 1178:) 1172:, 1166:( 1160:| 1154:e 1151:, 1145:( 1139:( 1136:k 1124:| 1121:) 1118:n 1115:e 1109:. 1103:( 1100:k 1094:n 1085:t 1079:= 1076:a 1070:: 1067:) 1064:a 1052:: 1049:k 1046:( 1043:) 1034:: 1031:e 1028:( 1025:) 1019:: 1016:t 1013:( 979:t 973:= 967:: 964:) 958:: 955:t 952:( 943:k 940:) 937:e 928:( 925:t 913:= 907:e 904:, 901:t 898:( 892:( 886:= 883:) 877:: 874:k 871:( 868:) 862:: 856:( 853:) 847:: 841:( 829:k 826:, 823:e 820:, 814:( 808:( 805:e 793:) 787:, 781:( 775:| 769:e 766:, 760:( 754:( 751:k 736:| 733:) 730:n 727:e 721:. 715:( 712:k 703:n 694:t 688:= 682:: 679:) 673:: 670:k 667:( 664:) 655:: 652:e 649:( 646:) 640:: 637:t 634:( 625:v 619:v 616:, 610:| 607:k 586:k 583:, 577:( 571:| 565:k 562:, 556:( 550:( 547:e 529:k 526:, 523:e 520:, 514:( 505:v 502:, 499:c 493:= 487:: 484:) 478:: 475:v 472:( 469:) 463:: 460:c 457:( 442:| 436:* 424:| 418:* 409:* 397:= 382:* 370:= 339:* 327:| 315:| 300:= 188:Οƒ 122:f 105:t 99:x

Index

abstract machine
Matthias Felleisen
Daniel P. Friedman
call by value
functional programming languages
imperative programming languages
continuation
SECD machine
CESK machine
lambda calculus
original paper
lazily evaluated
SECD machine
postfix notation
Matthias Felleisen
Daniel P. Friedman
John Reynolds
closures
invented
Peter Landin
defunctionalized form
continuation-passing style
compositional
definitional self-interpreter
Scott
Tarski
Danvy
Landin
SECD machine
Krivine machine

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑