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:(
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.