Knowledge

S-expression

Source đź“ť

20: 815:) or a finite list of other S-expressions. It describes three interchange formats for expressing this structure. One is the "advanced transport", which is very flexible in terms of formatting, and is syntactically similar to Lisp-style expressions, but they are not identical. The advanced transport, for example, allows octet-strings to be represented verbatim (the string's length followed by a colon and the entire raw string), a quoted form allowing escape characters, 2329: 2319: 2299: 2289: 2309: 830:"for digital signature purposes". It's intended to be compact, easier to parse, and unique for any abstract S-expression. It only allows verbatim strings, and prohibits whitespace as formatting outside strings. Finally there is the "basic transport representation", which is either the canonical form or the same encoded as Base64 and surrounded by 751:, each using different syntax. Another is that S-expressions do not define a reference mechanism, where XML provides a notion of unique identifiers and references to them. For simple use cases, S-expressions are simpler than XML, but for more advanced use cases, XML has a query language so called 704:
S-expressions can be read in Lisp using the function READ. READ reads the textual representation of an S-expression and returns Lisp data. The function PRINT can be used to output an S-expression. The output then can be read with the function READ, when all printed data objects have a readable
432:
As noted above, the precise definition of "atom" varies across LISP-like languages. A quoted string can typically contain anything but a quote, while an unquoted identifier atom can typically contain anything but quotes, whitespace characters, parentheses, brackets, braces, backslashes, and
823:, or placed directly as a "token" if it meets certain conditions. (Rivest's tokens differ from Lisp tokens in that the former are just for convenience and aesthetics, and treated exactly like other strings, while the latter have specific syntactical meaning.) 462:
is a two-element S-expression whose elements are also two-element S-expressions. The whitespace-separated notation used in Lisp (and this article) is typical. Line breaks (newline characters) usually qualify as separators. This is a simple
705:
representation. Lisp has readable representations for numbers, strings, symbols, lists and many other data types. Program code can be formatted as pretty printed S-expressions using the function PPRINT (note: with two Ps, short for
451:, but the first implementation of Lisp was an interpreter of S-expression encodings of M-expressions, and Lisp programmers soon became accustomed to using S-expressions for both code and data. This means that Lisp is 804:) rather than specifically for programming. It was never approved as an RFC, but it has since been cited and used by other RFCs (e.g. RFC 2693) and several other publications. It was originally intended for use in 834:, the latter intended to safely transport a canonically encoded S-expression in a system which might change spacing (e.g. an email system which has 80-character-wide lines and wraps anything longer than that). 404:
When representing source code in Lisp, the first element of an S-expression is commonly an operator or function name and any remaining elements are treated as arguments. This is called "prefix notation" or
716:
is a valid S-expression, but not a valid Lisp program, since Lisp uses prefix notation and a floating point number (here 1.0) is not valid as an operation (the first element of the expression).
1986: 992:
Sperber, Michael; Dybvig, R. Kent; Flatt, Matthew; Van Straaten, Anton; Findler, Robby; Matthews, Jacob (Aug 12, 2009). "Revised6 Report on the Algorithmic Language Scheme".
282:
In the Lisp family of programming languages, S-expressions are used to represent both source code and data. Other uses of S-expressions are in Lisp-derived languages such as
1980: 467:
for a tiny subset of English written as an S-expression (Gazdar/Melish, Natural Language Processing in Lisp), where S=sentence, NP=Noun Phrase, VP=Verb Phrase, V=Verb:
747:: one key difference is that S-expressions have just one form of containment, the dotted pair, while XML tags can contain simple attributes, other tags, or 1133: 283: 1039:, Network Working Group, Internet Draft, Expires November 4, 1997 - R. Rivest, May 4, 1997 draft-rivest-sexp-00.txt, Ronald L. Rivest, CSAIL MIT website 322:
There are many variants of the S-expression format, supporting a variety of different syntaxes for different datatypes. The most widely supported are:
1889: 857:), which could be adapted and embedded into other programs. In addition, there are no restrictions on independently implementing the format. 2313: 728: 922: 1383: 2333: 2293: 1616: 170:, with which objects can be marked, which can then recur elsewhere, indicating shared rather than duplicated structure, enabling the 146:, and cannot be represented in classical S-expression notation unless a convention for cross-reference is provided (analogous to SQL 314:
vary in the different languages, but the most common feature among these languages is the use of S-expressions and prefix notation.
896: 2303: 1048: 142:. However, the representation can in principle allow circular references, in which case the structure is not a tree at all, but a 1126: 800:. The draft defined a syntax based on Lisp S-expressions but intended for general-purpose data storage and exchange (similar to 303: 1974: 1160: 769:
Standards for some Lisp-derived programming languages include a specification for their S-expression syntax. These include
2353: 2323: 2025: 1755: 2358: 1263: 1061: 1036: 433:
semicolons. In either case, a prohibited character can typically be included by escaping it with a preceding backslash.
2101: 2081: 1991: 1835: 1165: 1119: 455:; that is, the primary representation of programs is also a data structure in a primitive type of the language itself. 299: 196: 1652: 805: 295: 2096: 2060: 1399: 1420: 1404: 1249: 842: 212: 78: 2169: 1761: 1453: 1374: 774: 276: 163: 138:
clause of the definition means that both this representation and the S-expression notation can represent any
95: 1943: 1607: 1430: 1201: 1196: 2207: 1522: 1468: 1445: 1409: 1229: 1142: 218:
Most modern sexpr notations allow more general quoted strings (for example including punctuation or full
62: 1717: 1697: 1682: 1667: 1587: 2138: 1770: 1642: 1364: 1238: 974: 930: 268: 2055: 1868: 1478: 1211: 1185: 1006: 850: 420: 2230: 891: 827: 764: 1873: 1712: 1358: 1323: 1296: 1001: 291: 61:-structured) data. S-expressions were invented for and popularized by the programming language 919: 2182: 1884: 1840: 1818: 1340: 1175: 122:
This definition reflects LISP's representation of a list as a series of "cells", each one an
58: 23: 2298: 2086: 2040: 1808: 797: 464: 200: 175: 34: 712:
Lisp programs are valid S-expressions, but not all S-expressions are valid Lisp programs.
8: 1291: 1219: 957: 837:
This format has not been widely adapted for use outside of SPKI (some of the users being
624:
Program code can be written in S-expressions, usually using prefix notation. Example in
222:), and use an abbreviated notation to represent lists with more than 2 members, so that 178:
to detect and thus trigger evaluation or display of cycles without infinitely recursing
2192: 2177: 2129: 2035: 1318: 1272: 1019: 208: 2268: 2187: 2154: 1788: 1672: 1023: 811:
Rivest's format defines an S-expression as being either an octet-string (a series of
2134: 2106: 2020: 1938: 1747: 1011: 54: 2245: 2240: 2015: 1906: 1457: 1329: 1312: 926: 881: 724: 406: 287: 19: 2235: 2225: 2220: 2159: 2030: 1435: 1170: 958:"Revised Report on the Algorithmic Language‌ Scheme: Section 2.4: Datum Labels" 793: 440:
The recursive case of the s-expr definition is traditionally implemented using
1069: 1015: 755:, many tools and third party libraries to simplify the handling of XML data. 2347: 2197: 2144: 2124: 2076: 2045: 1727: 410: 1111: 195:
The definition of an atom varies per context; in the original definition by
2263: 1796: 1190: 1099: 886: 448: 204: 143: 123: 447:
S-expressions were originally intended only for data to be manipulated by
2215: 2149: 2116: 2068: 2050: 1801: 1611: 1394: 1281: 1244: 1180: 871: 854: 816: 770: 625: 307: 171: 159: 147: 139: 131: 66: 943: 199:, it was assumed that there existed "an infinite set of distinguishable 2091: 1948: 1933: 1732: 1633: 1623: 1483: 1307: 1105: 789: 452: 1093: 944:"Common Lisp HyperSpec: 22.4 - The Printer Dictionary: *PRINT-CIRCLE*" 1953: 1647: 1463: 1440: 1415: 1335: 441: 311: 135: 1737: 1722: 1707: 1597: 1592: 1540: 1501: 1214: 1958: 1879: 1702: 1692: 1677: 1637: 1602: 1545: 1535: 1530: 1425: 831: 434: 219: 2255: 1765: 1662: 1628: 1574: 1563: 1555: 1493: 1389: 1353: 820: 782: 991: 1845: 1687: 1657: 1569: 1302: 1108:
has implementations of readers and writers in many languages.
876: 838: 752: 748: 853:
source code for a parser and generator (available under the
1981:
MIT Computer Science and Artificial Intelligence Laboratory
1775: 1473: 1345: 866: 812: 778: 719:
An S-expression preceded by a single quotation mark, as in
151: 846: 801: 744: 155: 1096:
the small, fast S-expression library for C/C++ on GitHub
773:(ANSI standard document ANSI INCITS 226-1994 (R2004)), 388:
is often used to prefix extensions to the syntax, e.g.
53:) is an expression in a like-named notation for nested 975:"Revised^5 Report on the Algorithmic Language Scheme" 207:
and digits with single embedded blanks" (a subset of
81:of Lisp, an S-expression is classically defined as 1890:Structure and Interpretation of Computer Programs 130:points to the next cell (if any), thus forming a 2345: 849:lsh). Rivest's S-expressions web page provides 914: 912: 458:Nested lists can be written as S-expressions: 1141: 1127: 26:data structure representing the S-expression 158:IDREFs, etc.). Modern Lisp dialects such as 1987:Stanford Artificial Intelligence Laboratory 920:Recursive functions of symbolic expressions 909: 306:. It's also used as text representation of 2288: 1134: 1120: 310:. The details of the syntax and supported 1005: 897:Comparison of data serialization formats 429:in Lisp's s-expr-based prefix notation. 18: 796:to be considered for publication as an 317: 2346: 275:, which is the only representation in 1975:Massachusetts Institute of Technology 1115: 203:" represented as "strings of capital 2308: 743:S-expressions are often compared to 13: 1992:University of California, Berkeley 1836:Scheme Requests for Implementation 758: 72: 14: 2370: 1653:Knowledge Engineering Environment 1087: 994:Journal of Functional Programming 2328: 2327: 2318: 2317: 2307: 2297: 2287: 460:((milk juice) (honey marmalade)) 1054: 1042: 1030: 985: 967: 950: 936: 399: 1: 1762:Common Lisp Interface Manager 902: 392:for hexadecimal integers, or 1161:Automatic storage management 1106:S-expressions on Rosettacode 7: 2354:Lisp (programming language) 1410:Game Oriented Assembly Lisp 918:John McCarthy (1960/2006). 860: 267:is the special end-of-list 77:In the usual parenthesized 10: 2375: 2359:Data serialization formats 929:. Originally published in 762: 738: 2285: 2254: 2206: 2168: 2115: 2011: 2004: 1967: 1926: 1919: 1899: 1861: 1854: 1828: 1817: 1787: 1746: 1554: 1521: 1514: 1492: 1373: 1280: 1271: 1262: 1239:Common Lisp Object System 1228: 1156: 1149: 1143:Lisp programming language 1051:, Google Scholar (search) 1016:10.1017/S0956796809990074 931:Communications of the ACM 826:Rivest's draft defines a 16:Data serialization format 1939:Bolt, Beranek and Newman 1869:Common Lisp the Language 828:canonical representation 630: 469: 166:provide such syntax via 892:Canonical S-expressions 765:Canonical S-expressions 292:communication protocols 271:(alternatively written 1874:How to Design Programs 1713:Portable Standard Lisp 1359:Steel Bank Common Lisp 1324:Embeddable Common Lisp 1297:Armed Bear Common Lisp 1176:Higher-order functions 1062:"SEXP (S-expressions)" 409:". As an example, the 369:Floating-point numbers 346:|a symbol with spaces| 65:, which uses them for 30: 2183:Shriram Krishnamurthi 1885:Practical Common Lisp 1841:Common Lisp HyperSpec 1365:Symbolics Common Lisp 1341:Macintosh Common Lisp 22: 2087:Robert Tappan Morris 2041:Robert Bruce Findler 1809:Space-cadet keyboard 1220:Tree data structures 1197:Read–eval–print loop 1066:people.csail.mit.edu 465:context-free grammar 423:, is represented as 318:Datatypes and syntax 85:an atom of the form 35:computer programming 1829:Technical standards 1292:Allegro Common Lisp 729:quoted S-expression 616:"Dr Chan" 413:expression written 43:symbolic expression 2193:Gerald Jay Sussman 2178:Matthias Felleisen 2130:Richard P. Gabriel 2061:Richard Greenblatt 2036:Matthias Felleisen 1319:Corman Common Lisp 925:2004-02-02 at the 331:(1 () (2 . 3) (4)) 126:. In plain lists, 118:are S-expressions. 31: 2341: 2340: 2281: 2280: 2277: 2276: 2269:Robin Popplestone 2188:Guy L. Steele Jr. 2155:Guy L. Steele Jr. 2000: 1999: 1915: 1914: 1783: 1782: 1673:Lisp Machine Lisp 1583: 1582: 1510: 1509: 1258: 1257: 1102:, by LĂ©on Bottou. 69:as well as data. 45:, abbreviated as 2366: 2331: 2330: 2321: 2320: 2311: 2310: 2301: 2291: 2290: 2135:Philip Greenspun 2107:Richard Stallman 2021:Daniel G. Bobrow 2009: 2008: 1924: 1923: 1859: 1858: 1826: 1825: 1748:Operating system 1519: 1518: 1278: 1277: 1269: 1268: 1154: 1153: 1136: 1129: 1122: 1113: 1112: 1081: 1080: 1078: 1077: 1068:. Archived from 1058: 1052: 1046: 1040: 1034: 1028: 1027: 1009: 989: 983: 982: 971: 965: 964: 962: 954: 948: 947: 940: 934: 916: 734: 722: 715: 700: 697: 694: 691: 688: 685: 682: 679: 676: 673: 670: 667: 664: 661: 658: 655: 652: 649: 646: 643: 640: 637: 634: 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: 461: 437:support varies. 428: 427: 418: 417: 396:for characters. 395: 391: 387: 380: 377: 374: 365: 356: 347: 344: 341: 332: 274: 266: 260: 238: 209:character string 191: 109: 90: 29: 2374: 2373: 2369: 2368: 2367: 2365: 2364: 2363: 2344: 2343: 2342: 2337: 2273: 2250: 2246:Cynthia Solomon 2241:Mitchel Resnick 2202: 2164: 2111: 2065:Timothy P. Hart 2026:William Clinger 2016:Edmund Berkeley 1996: 1963: 1911: 1907:ProgramByDesign 1895: 1850: 1820: 1813: 1779: 1742: 1579: 1550: 1506: 1488: 1369: 1330:GNU Common Lisp 1313:CMU Common Lisp 1283: 1264:Implementations 1254: 1224: 1145: 1140: 1090: 1085: 1084: 1075: 1073: 1060: 1059: 1055: 1047: 1043: 1035: 1031: 990: 986: 973: 972: 968: 960: 956: 955: 951: 942: 941: 937: 927:Wayback Machine 917: 910: 905: 882:Lambda calculus 863: 767: 761: 759:Standardization 741: 732: 731:, in this case 725:syntactic sugar 720: 713: 702: 701: 698: 695: 692: 689: 686: 683: 680: 677: 674: 671: 668: 665: 662: 659: 656: 653: 650: 647: 644: 641: 638: 635: 632: 622: 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: 459: 425: 424: 415: 414: 407:Polish notation 402: 393: 389: 385: 378: 375: 372: 363: 355:"Hello, world!" 354: 345: 342: 339: 330: 327:Lists and pairs 320: 272: 264: 246: 226: 182: 99: 86: 75: 73:Characteristics 27: 17: 12: 11: 5: 2372: 2362: 2361: 2356: 2339: 2338: 2286: 2283: 2282: 2279: 2278: 2275: 2274: 2272: 2271: 2266: 2260: 2258: 2252: 2251: 2249: 2248: 2243: 2238: 2236:Seymour Papert 2233: 2228: 2226:Wally Feurzeig 2223: 2221:Denison Bollay 2218: 2212: 2210: 2204: 2203: 2201: 2200: 2195: 2190: 2185: 2180: 2174: 2172: 2166: 2165: 2163: 2162: 2160:Daniel Weinreb 2157: 2152: 2147: 2142: 2132: 2127: 2121: 2119: 2113: 2112: 2110: 2109: 2104: 2099: 2094: 2089: 2084: 2079: 2074: 2071: 2066: 2063: 2058: 2053: 2048: 2043: 2038: 2033: 2031:R. Kent Dybvig 2028: 2023: 2018: 2012: 2006: 2002: 2001: 1998: 1997: 1995: 1994: 1989: 1984: 1978: 1971: 1969: 1965: 1964: 1962: 1961: 1956: 1951: 1946: 1941: 1936: 1934:Apple Computer 1930: 1928: 1921: 1917: 1916: 1913: 1912: 1910: 1909: 1903: 1901: 1897: 1896: 1894: 1893: 1887: 1882: 1877: 1871: 1865: 1863: 1856: 1852: 1851: 1849: 1848: 1843: 1838: 1832: 1830: 1823: 1815: 1814: 1812: 1811: 1806: 1805: 1804: 1793: 1791: 1785: 1784: 1781: 1780: 1778: 1773: 1768: 1759: 1752: 1750: 1744: 1743: 1741: 1740: 1735: 1730: 1725: 1720: 1715: 1710: 1705: 1700: 1695: 1690: 1685: 1680: 1675: 1670: 1665: 1660: 1655: 1650: 1645: 1640: 1631: 1626: 1621: 1605: 1600: 1595: 1590: 1584: 1581: 1580: 1578: 1577: 1572: 1567: 1560: 1558: 1552: 1551: 1549: 1548: 1543: 1538: 1533: 1527: 1525: 1516: 1515:Unstandardized 1512: 1511: 1508: 1507: 1505: 1504: 1498: 1496: 1490: 1489: 1487: 1486: 1481: 1476: 1471: 1466: 1461: 1451: 1448: 1443: 1438: 1436:MIT/GNU Scheme 1433: 1428: 1423: 1418: 1413: 1407: 1402: 1397: 1392: 1387: 1379: 1377: 1371: 1370: 1368: 1367: 1362: 1356: 1351: 1348: 1343: 1338: 1333: 1327: 1321: 1316: 1310: 1305: 1300: 1294: 1288: 1286: 1275: 1266: 1260: 1259: 1256: 1255: 1253: 1252: 1247: 1242: 1235: 1233: 1226: 1225: 1223: 1222: 1217: 1209: 1204: 1199: 1194: 1188: 1183: 1178: 1173: 1171:Dynamic typing 1168: 1163: 1157: 1151: 1147: 1146: 1139: 1138: 1131: 1124: 1116: 1110: 1109: 1103: 1097: 1089: 1088:External links 1086: 1083: 1082: 1053: 1041: 1029: 1007:10.1.1.372.373 984: 966: 949: 935: 907: 906: 904: 901: 900: 899: 894: 889: 884: 879: 874: 869: 862: 859: 794:Internet Draft 760: 757: 740: 737: 631: 470: 401: 398: 384:The character 382: 381: 366: 357: 348: 333: 319: 316: 262: 261: 240: 239: 201:atomic symbols 193: 192: 120: 119: 92: 74: 71: 15: 9: 6: 4: 3: 2: 2371: 2360: 2357: 2355: 2352: 2351: 2349: 2336: 2335: 2326: 2325: 2316: 2315: 2306: 2305: 2300: 2296: 2295: 2284: 2270: 2267: 2265: 2262: 2261: 2259: 2257: 2253: 2247: 2244: 2242: 2239: 2237: 2234: 2232: 2229: 2227: 2224: 2222: 2219: 2217: 2214: 2213: 2211: 2209: 2205: 2199: 2198:Julie Sussman 2196: 2194: 2191: 2189: 2186: 2184: 2181: 2179: 2176: 2175: 2173: 2171: 2167: 2161: 2158: 2156: 2153: 2151: 2148: 2146: 2145:David A. Moon 2143: 2140: 2136: 2133: 2131: 2128: 2126: 2125:Scott Fahlman 2123: 2122: 2120: 2118: 2114: 2108: 2105: 2103: 2102:Steve Russell 2100: 2098: 2095: 2093: 2090: 2088: 2085: 2083: 2082:John McCarthy 2080: 2078: 2077:David Luckham 2075: 2072: 2070: 2067: 2064: 2062: 2059: 2057: 2054: 2052: 2049: 2047: 2046:Matthew Flatt 2044: 2042: 2039: 2037: 2034: 2032: 2029: 2027: 2024: 2022: 2019: 2017: 2014: 2013: 2010: 2007: 2003: 1993: 1990: 1988: 1985: 1982: 1979: 1976: 1973: 1972: 1970: 1966: 1960: 1957: 1955: 1952: 1950: 1947: 1945: 1942: 1940: 1937: 1935: 1932: 1931: 1929: 1925: 1922: 1920:Organizations 1918: 1908: 1905: 1904: 1902: 1898: 1891: 1888: 1886: 1883: 1881: 1878: 1875: 1872: 1870: 1867: 1866: 1864: 1860: 1857: 1853: 1847: 1844: 1842: 1839: 1837: 1834: 1833: 1831: 1827: 1824: 1822: 1816: 1810: 1807: 1803: 1800: 1799: 1798: 1795: 1794: 1792: 1790: 1786: 1777: 1774: 1772: 1769: 1767: 1763: 1760: 1758: 1757: 1753: 1751: 1749: 1745: 1739: 1736: 1734: 1731: 1729: 1726: 1724: 1721: 1719: 1716: 1714: 1711: 1709: 1706: 1704: 1701: 1699: 1696: 1694: 1691: 1689: 1686: 1684: 1681: 1679: 1676: 1674: 1671: 1669: 1666: 1664: 1661: 1659: 1656: 1654: 1651: 1649: 1646: 1644: 1641: 1639: 1635: 1632: 1630: 1627: 1625: 1622: 1619: 1618: 1613: 1609: 1606: 1604: 1601: 1599: 1596: 1594: 1591: 1589: 1586: 1585: 1576: 1573: 1571: 1568: 1565: 1562: 1561: 1559: 1557: 1553: 1547: 1544: 1542: 1539: 1537: 1534: 1532: 1529: 1528: 1526: 1524: 1520: 1517: 1513: 1503: 1500: 1499: 1497: 1495: 1491: 1485: 1482: 1480: 1477: 1475: 1472: 1470: 1467: 1465: 1462: 1459: 1455: 1452: 1450:Pocket Scheme 1449: 1447: 1444: 1442: 1439: 1437: 1434: 1432: 1429: 1427: 1424: 1422: 1419: 1417: 1414: 1411: 1408: 1406: 1403: 1401: 1398: 1396: 1393: 1391: 1388: 1386: 1385: 1381: 1380: 1378: 1376: 1372: 1366: 1363: 1360: 1357: 1355: 1352: 1349: 1347: 1344: 1342: 1339: 1337: 1334: 1331: 1328: 1325: 1322: 1320: 1317: 1314: 1311: 1309: 1306: 1304: 1301: 1298: 1295: 1293: 1290: 1289: 1287: 1285: 1279: 1276: 1274: 1270: 1267: 1265: 1261: 1251: 1248: 1246: 1243: 1240: 1237: 1236: 1234: 1231: 1227: 1221: 1218: 1216: 1213: 1210: 1208: 1207:S-expressions 1205: 1203: 1200: 1198: 1195: 1192: 1191:M-expressions 1189: 1187: 1184: 1182: 1179: 1177: 1174: 1172: 1169: 1167: 1164: 1162: 1159: 1158: 1155: 1152: 1148: 1144: 1137: 1132: 1130: 1125: 1123: 1118: 1117: 1114: 1107: 1104: 1101: 1098: 1095: 1092: 1091: 1072:on 2023-02-23 1071: 1067: 1063: 1057: 1050: 1045: 1038: 1037:S-expressions 1033: 1025: 1021: 1017: 1013: 1008: 1003: 1000:(S1): 1–301. 999: 995: 988: 980: 976: 970: 963:. 2013-07-06. 959: 953: 946:. 2018-12-28. 945: 939: 932: 928: 924: 921: 915: 913: 908: 898: 895: 893: 890: 888: 885: 883: 880: 878: 875: 873: 870: 868: 865: 864: 858: 856: 852: 848: 844: 841:, libgcrypt, 840: 835: 833: 829: 824: 822: 818: 814: 809: 807: 803: 799: 795: 792:submitted an 791: 788:In May 1997, 786: 784: 780: 776: 772: 766: 756: 754: 750: 746: 736: 730: 726: 717: 710: 708: 629: 627: 468: 466: 456: 454: 450: 449:M-expressions 445: 443: 438: 436: 430: 426:(= 4 (+ 2 2)) 422: 412: 408: 397: 370: 367: 361: 358: 352: 349: 337: 334: 328: 325: 324: 323: 315: 313: 309: 305: 301: 300:John McCarthy 297: 293: 289: 285: 280: 278: 270: 258: 254: 250: 245: 244: 243: 236: 233: 230: 225: 224: 223: 221: 216: 214: 210: 206: 205:Latin letters 202: 198: 197:John McCarthy 189: 186: 181: 180: 179: 177: 173: 169: 165: 161: 157: 153: 149: 145: 141: 137: 133: 129: 125: 117: 113: 107: 103: 97: 93: 89: 84: 83: 82: 80: 70: 68: 64: 60: 56: 52: 48: 44: 40: 36: 28:(* 2 (+ 3 4)) 25: 21: 2332: 2322: 2312: 2302: 2292: 2264:Rod Burstall 2231:Brian Harvey 1797:Lisp machine 1754: 1615: 1382: 1273:Standardized 1212:Self-hosting 1206: 1193:(deprecated) 1181:Linked lists 1166:Conditionals 1074:. Retrieved 1070:the original 1065: 1056: 1044: 1032: 997: 993: 987: 979:schemers.org 978: 969: 952: 938: 887:M-expression 836: 825: 810: 787: 768: 742: 718: 711: 706: 703: 623: 457: 446: 439: 431: 416:4 == (2 + 2) 403: 383: 368: 359: 350: 335: 326: 321: 281: 263: 256: 252: 248: 241: 234: 231: 228: 217: 211:and numeric 194: 187: 184: 168:datum labels 167: 148:foreign keys 144:cyclic graph 127: 124:ordered pair 121: 115: 111: 105: 101: 98:of the form 87: 76: 50: 46: 42: 39:S-expression 38: 32: 2216:Hal Abelson 2150:Kent Pitman 2117:Common Lisp 2069:Louis Hodes 2056:Paul Graham 2051:Phyllis Fox 1821:of practice 1802:TI Explorer 1395:Chez Scheme 1245:CommonLoops 1049:rivest sexp 872:CAR and CDR 855:MIT license 817:hexadecimal 771:Common Lisp 714:(1.0 + 3.1) 626:Common Lisp 400:Use in Lisp 364:-9876543210 340:with-hyphen 308:WebAssembly 242:stands for 160:Common Lisp 140:binary tree 67:source code 2348:Categories 2097:David Park 2092:Joel Moses 2073:Mike Levin 1949:Lucid Inc. 1900:Curriculum 1733:Spice Lisp 1634:Franz Lisp 1624:Emacs Lisp 1484:TinyScheme 1308:Clozure CL 1076:2023-05-05 903:References 790:Ron Rivest 777:(R5RS and 763:See also: 601:Medicenter 453:homoiconic 442:cons cells 312:data types 96:expression 2139:10th rule 1968:Education 1954:Symbolics 1944:Harlequin 1855:Education 1819:Community 1648:Interlisp 1464:Scheme 48 1441:MultiLisp 1416:GNU Guile 1336:LispWorks 1202:Recursion 1024:267822156 1002:CiteSeerX 733:(quote x) 709:-print). 684:factorial 639:factorial 286:, and as 136:recursive 2334:Category 2324:Category 1927:Business 1789:Hardware 1738:Zetalisp 1723:S-1 Lisp 1708:Picolisp 1598:BBN LISP 1593:AutoLISP 1541:StarLogo 1502:OpenLisp 1458:features 1215:compiler 1150:Features 1100:minilisp 923:Archived 861:See also 586:patients 556:employed 379:6.022e23 360:Integers 259:. NIL))) 213:literals 2314:Commons 1983:(CSAIL) 1959:Xanalys 1880:On Lisp 1703:PC-LISP 1693:newLISP 1678:Maclisp 1638:PC-LISP 1617:history 1603:Clojure 1566:(POP-1) 1546:UCBLogo 1536:NetLogo 1531:MSWLogo 1426:JScheme 1400:Chicken 1384:History 1315:(CMUCL) 1250:Flavors 1232:systems 781:), and 739:Parsing 435:Unicode 411:Boolean 376:6.28318 351:Strings 336:Symbols 288:mark-up 220:Unicode 176:printer 2170:Scheme 2005:People 1892:(SICP) 1876:(HTDP) 1771:Genera 1766:McCLIM 1663:LeLisp 1629:EuLisp 1575:POP-11 1564:COWSEL 1494:ISLISP 1454:Racket 1421:Ikarus 1412:(GOAL) 1405:Gambit 1390:Bigloo 1375:Scheme 1361:(SBCL) 1354:Poplog 1350:Movitz 1299:(ABCL) 1282:Common 1241:(CLOS) 1230:Object 1186:Macros 1094:sfsexp 1022:  1004:  845:, and 843:Nettle 832:braces 821:Base64 783:ISLISP 775:Scheme 727:for a 707:pretty 571:nurses 277:Scheme 269:object 190:. #n#) 172:reader 164:Scheme 134:. The 110:where 79:syntax 2304:Books 1977:(MIT) 1862:Books 1846:X3J13 1728:SKILL 1688:MLisp 1658:*Lisp 1612:Apple 1608:Dylan 1570:POP-2 1332:(GCL) 1326:(ECL) 1303:CLISP 1020:S2CID 961:(PDF) 877:Fexpr 839:GnuPG 813:bytes 753:XPath 749:CDATA 723:, is 699:))))) 660:zerop 636:defun 343:?@!$ 294:like 284:DSSSL 47:sexpr 37:, an 2294:List 2208:Logo 1776:Scsh 1756:List 1523:Logo 1474:SIOD 1446:Pico 1431:Kawa 1346:Mocl 1284:Lisp 867:cons 806:SPKI 779:R6RS 541:died 390:#x10 373:-0.0 304:CBCL 298:and 296:IMAP 183:#n=( 162:and 152:SGML 132:list 114:and 91:, or 63:Lisp 59:tree 55:list 51:sexp 41:(or 24:Tree 2256:POP 1718:RPL 1698:NIL 1683:MDL 1668:LFE 1588:Arc 1556:POP 1469:SCM 1012:doi 847:GNU 802:XML 798:RFC 745:XML 472:((( 419:in 394:#\C 302:'s 290:in 279:). 265:NIL 255:. ( 251:. ( 215:). 174:or 156:XML 94:an 49:or 33:In 2350:: 1764:, 1643:Hy 1636:, 1614:, 1064:. 1018:. 1010:. 998:19 996:. 977:. 911:^ 819:, 808:. 785:. 735:. 721:'x 654:if 628:: 619:)) 610:NP 607:(( 595:NP 592:(( 580:NP 577:(( 565:NP 562:(( 547:(( 532:(( 529:)) 526:NP 514:VP 511:(( 508:)) 496:VP 493:(( 490:)) 487:VP 484:NP 444:. 371:: 362:: 353:: 338:: 329:: 273:() 150:, 104:. 2141:) 2137:( 1620:) 1610:( 1479:T 1460:) 1456:( 1135:e 1128:t 1121:v 1079:. 1026:. 1014:: 981:. 933:. 851:C 696:1 693:x 690:- 687:( 681:( 678:x 675:* 672:( 669:1 666:) 663:x 657:( 651:( 648:) 645:x 642:( 633:( 613:) 604:) 598:) 589:) 583:) 574:) 568:) 559:) 553:) 550:V 544:) 538:) 535:V 523:V 520:( 517:) 505:V 502:( 499:) 481:( 478:) 475:S 421:C 405:" 386:# 257:z 253:y 249:x 247:( 237:) 235:z 232:y 229:x 227:( 188:y 185:x 154:/ 128:y 116:y 112:x 108:) 106:y 102:x 100:( 88:x 57:(

Index


Tree
computer programming
list
tree
Lisp
source code
syntax
expression
ordered pair
list
recursive
binary tree
cyclic graph
foreign keys
SGML
XML
Common Lisp
Scheme
reader
printer
John McCarthy
atomic symbols
Latin letters
character string
literals
Unicode
object
Scheme
DSSSL

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

↑