Knowledge

Common Lisp Object System

Source đź“ť

148:. A generic function is an object which is callable like a function and which associates a collection of methods with a shared name and argument structure, each specialized for different arguments. Since Common Lisp provides non-CLOS classes for structures and built-in data types (numbers, strings, characters, symbols, ...), CLOS dispatch works also with these non-CLOS classes. CLOS also supports dispatch over individual objects (eql specializers). CLOS does not by default support dispatch over all Common Lisp data types (for example dispatch does not work for fully specialized array types or for types introduced by 2718: 2708: 2688: 24: 2678: 2698: 140:
can be specialized upon any or all of their required arguments. Most OO languages are single-dispatch, meaning that methods are only specialized on the first argument. Another unusual feature is that methods do not "belong" to classes; classes do not provide a namespace for generic functions or
176:
This dispatch mechanism works at runtime. Adding or removing methods thus may lead to changed effective methods (even when the generic function is called with the same arguments) at runtime. Changing the method combination also may lead to different effective methods.
495:-D). CommonLoops was implemented for Common Lisp. A portable implementation called Portable CommonLoops (PCL) was the first implementation of CLOS. PCL is widely ported and still provides the base for the CLOS implementation of several 451:. The MOP defines the behavior of the whole object system by a set of protocols. These are defined in terms of CLOS. Thus it is possible to create new object-systems by extending or changing the provided CLOS functionality. The book 407:
of its objects can be modified at runtime. CLOS supports changing class definitions on-the-fly (even when instances of the class in question already exist) as well as changing the class membership of a given instance through the
974: 955: 388:
provides the primary, before, after and around methods explained above. There are other Method-Combinations with other method types. New (both simple and complex) Method-Combinations and method types can be defined.
905: 439:
Protocol (MOP). The MOP defines a standard interface to the underpinnings of the CLOS implementation, treating classes, slot-descriptions, generic-functions and methods themselves as instances of
70:, although it is more general than either. Originally proposed as an add-on, CLOS was adopted as part of the ANSI standard for Common Lisp and has been adapted into other Lisp dialects such as 485:, among other features. Flavors is mostly obsolete, though implementations for Common Lisp do exist. Flavors was using the message passing paradigm. New Flavors introduced generic functions. 737:"CLOS is a standard. Multiple vendors supply CLOS. CLOS (or parts of it) is being used to add object-orientation to other Lisp dialects such as EuLisp or Emacs Lisp." p. 110 of Veitch 1998 125:. Slots can be allocated by class (all instances of a class share the slot) or by instance. Each slot has a name and the value of a slot can be accessed by that name using the function 2375: 750:
slides, Peter Norvig presents his findings that 16 out of 23 design patterns taken from various textbooks are either "invisible or simpler" in Dylan or Common Lisp than in C++.
1009:
provides a step-by-step exposure to the implementation of OO concepts in CLOS, and how to utilize them. It is intended for anybody with a basic knowledge of Lisp or Scheme.
2369: 1361: 377:
method can control whether the primary method is executed at all. Additionally, the programmer can specify whether all possible primary methods along the
1522: 507:
Because of the power and expressivity of CLOS, as well as the historical availability of Tiny CLOS (a simplified portable CLOS implementation written by
923: 2278: 996: 969: 950: 946: 373:"auxiliary" methods. The former two are invoked prior to, or after the primary method, in a particular order based on the class hierarchy. An 1006: 900: 129:. Additionally special generic functions can be defined to write or read values of slots. Each slot in a CLOS class must have a unique name. 141:
methods. Methods are defined separately from classes, and they have no special access (e.g. "this", "self", or "protected") to class slots.
2702: 1772: 1389: 1200: 2722: 2682: 2005: 443:, and allows the definition of new metaclasses and the modification of all CLOS behavior. The flexibility of the CLOS MOP prefigures 169:
Selected methods from this list are then combined into an effective method using the method combination used by the generic function.
2692: 1515: 378: 477:. Large parts of the Lisp Machine operating systems and many applications for it use Flavors or New Flavors. Flavors introduced 396:. When the default order in which methods are executed in multiple inheritance is not correct, the programmer may resolve the 2363: 1549: 1048: 834: 670: 643: 40: 2752: 2747: 2712: 2414: 2144: 1652: 1065: 2490: 2470: 2380: 2224: 1554: 1508: 1368: 1303: 1194: 932: 452: 2041: 983: 964: 941: 914: 715: 417: 339: 2485: 2449: 1788: 1809: 1793: 1638: 470: 2558: 2150: 1842: 1763: 1210: 118: 87: 2332: 1996: 1819: 1590: 1585: 526: 499:
implementations. PCL is implemented mostly in portable Common Lisp with only a few system dependent parts.
335: 91: 47: 458:
The various Common Lisp implementations have slightly different support for the Meta-Object Protocol. The
2596: 1911: 1857: 1834: 1798: 1618: 1531: 516: 444: 59: 36: 579: 2106: 2086: 2071: 2056: 1976: 546: 63: 613: 2527: 2159: 2031: 1753: 1489: 1151: 1041: 829: 435:
Outside of the ANSI Common Lisp standard, there is a widely implemented extension to CLOS called the
137: 848: 796: 2444: 2257: 1867: 1600: 1574: 1354: 617: 515:
norm in most Lisp dialect implementations, as well as finding their way into some other languages'
424: 999:
provides a good introduction to the motivation for defining classes by means of generic functions.
772: 156:
which allows generic functions to provide application specific specialization and dispatch rules.
2619: 534: 1018: 2262: 2101: 1747: 1712: 1685: 1145: 1105: 1078: 843: 791: 413: 2571: 2273: 2229: 2207: 1729: 1564: 1484: 1382: 1323: 1258: 1122: 1013: 17: 2687: 2742: 2475: 2429: 2197: 1240: 1034: 561: 478: 393: 8: 1680: 1608: 1313: 1189: 1184: 1170: 1073: 153: 759: 708:
Handbook of Programming Languages, Volume IV: Functional and Logic Programming Languages
651:
Conference proceedings on Object-oriented Programming Systems Languages and Applications
2581: 2566: 2518: 2424: 1707: 1661: 1432: 1100: 992: 863: 781: 676: 573: 427:: classes must be defined before objects can be instantiated as members of that class. 2657: 2576: 2543: 2177: 2061: 1457: 1452: 1411: 1278: 1253: 979: 960: 937: 910: 711: 666: 133: 1002: 867: 680: 2523: 2495: 2409: 2327: 2136: 1437: 1273: 927: 853: 658: 631: 412:
operator. CLOS also allows one to add, redefine and remove methods at runtime. The
145: 95: 684: 567: 2634: 2629: 2404: 2295: 1846: 1718: 1701: 1263: 1140: 1111: 1094: 919: 635: 508: 448: 397: 347: 166:
This list is sorted according to the specificity of their parameter specializers.
51: 358:
facility to declare which functions or data structures are intended for export.
2624: 2614: 2609: 2548: 2419: 1824: 1559: 1462: 703: 639: 2736: 2586: 2533: 2513: 2465: 2434: 2116: 1442: 1427: 886: 858: 604: 1500: 988: 50:
object system which differs radically from the OOP facilities found in more
2652: 2185: 1595: 1579: 474: 2604: 2538: 2505: 2457: 2439: 2190: 2000: 1783: 1670: 1633: 1569: 1447: 1057: 816: 597: 511:
for use with Scheme), CLOS-like MOP-based object systems have become the
496: 488: 354:
you have to know the name of the slot. CL programmers use the language's
67: 43: 906:
Object-Oriented Programming in Common Lisp: A Programmer's Guide to CLOS
662: 209:; Define an implementation for (f integer y), where y matches all types. 121:, a list of slots (member variables in C++/Java parlance) and a special 2480: 2337: 2322: 2121: 2022: 2012: 1872: 1696: 1318: 1089: 591: 436: 75: 540: 163:
Given a list of arguments, a list of applicable methods is determined.
2342: 2036: 1852: 1829: 1804: 1724: 1328: 1288: 1178: 1117: 774:
The C Object System: Using C as a High-Level Object-Oriented Language
747: 550: 492: 440: 355: 122: 23: 2126: 2111: 2096: 1986: 1981: 1929: 1890: 1603: 1161: 447:, which was later developed by some of the same engineers, such as 786: 710:(1st ed.). Macmillan Technical Publishing. pp. 107–158. 465: 403:
CLOS is dynamic, meaning that not only the contents, but also the
2347: 2268: 2091: 2081: 2066: 2026: 1991: 1934: 1924: 1919: 1814: 1375: 1293: 1283: 1221: 473:(and its successor New Flavors) was the object system on the MIT 172:
The effective method is then called with the original arguments.
2644: 2154: 2051: 2017: 1963: 1952: 1944: 1882: 1778: 1742: 1268: 1135: 654: 556: 482: 71: 1026: 381:
should be called or just the one providing the closest match.
2234: 2076: 2046: 1958: 1691: 1406: 1333: 1216: 1205: 1084: 55: 702:
Veitch, Jim (1998). "A History and Description of CLOS". In
2370:
MIT Computer Science and Artificial Intelligence Laboratory
2164: 1862: 1734: 1248: 1130: 644:"CommonLoops: Merging Lisp and Object-Oriented Programming" 159:
Dispatch in CLOS is also different from most OO languages:
62:. CLOS was inspired by earlier Lisp object systems such as 630: 585: 152:). However, most Common Lisp implementations provide a 502: 455:
describes the use and implementation of the CLOS MOP.
361:
Apart from normal ("primary") methods, there also are
828:
Newton, Jim; Rhodes, Christophe (28 November 2008).
185:; Declare the common argument structure prototype. 2279:Structure and Interpretation of Computer Programs 975:Object-Oriented Programming: the CLOS Perspective 956:Understanding CLOS: the Common Lisp Object System 2734: 400:by specifying the order of method combinations. 266:; Define an implementation for (f integer real). 466:Influences from older Lisp-based object systems 420:either disappear or are qualitatively simpler. 27:Standard method combination in ANSI common lisp 462:project aims to provide the missing features. 1530: 1516: 1042: 830:"Custom Specializers in Object-Oriented Lisp" 827: 531:Dynace, a (largely) CLOS implementation in C 346:function or via (optionally auto-generated) 2376:Stanford Artificial Intelligence Laboratory 642:; Stefik, Mark; Zdybel, Frank (June 1986). 2677: 1523: 1509: 1390:Object-Oriented Programming in Common Lisp 1049: 1035: 989:The Common Lisp Object System: An Overview 857: 847: 795: 785: 887:Tiny CLOS, developed by Gregor Kiczales 491:was the successor of LOOPS (from Xerox 416:is readily solved in CLOS, and most OOP 110:. Instances are created with the method 98:. CLOS provides macros to define those: 22: 2735: 770: 701: 430: 86:The basic building blocks of CLOS are 2364:Massachusetts Institute of Technology 1504: 1030: 835:Journal of Universal Computer Science 817:Dynace Object Oriented Extension To C 342:. Any slot can be accessed using the 2697: 748:Design Patterns in Dynamic Languages 503:CLOS in other programming languages 13: 2381:University of California, Berkeley 2225:Scheme Requests for Implementation 1369:The Art of the Metaobject Protocol 1195:Another System Definition Facility 933:The Art of the Metaobject Protocol 624: 453:The Art of the Metaobject Protocol 94:, instances of those classes, and 14: 2764: 2042:Knowledge Engineering Environment 771:Deniau, Laurent (12 March 2010). 144:Methods in CLOS are grouped into 2717: 2716: 2707: 2706: 2696: 2686: 2676: 33:Common Lisp Object System (CLOS) 1056: 880: 821: 810: 764: 753: 740: 731: 1: 2151:Common Lisp Interface Manager 1211:Common Lisp Interface Manager 894: 760:Closer Project: Closer to MOP 725: 329:;Dispatch changed at runtime. 1550:Automatic storage management 564:, an Object System in Scheme 398:diamond inheritance problems 334:Like the OO systems in most 7: 2753:Lisp (programming language) 2748:Object-oriented programming 1799:Game Oriented Assembly Lisp 1362:Paradigms of AI Programming 445:aspect-oriented programming 386:Standard Method-Combination 81: 37:object-oriented programming 10: 2769: 117:Classes can have multiple 15: 2674: 2643: 2595: 2557: 2504: 2400: 2393: 2356: 2315: 2308: 2288: 2250: 2243: 2217: 2206: 2176: 2135: 1943: 1910: 1903: 1881: 1762: 1669: 1660: 1651: 1628:Common Lisp Object System 1617: 1545: 1538: 1532:Lisp programming language 1479:Common Lisp Object System 1471: 1420: 1399: 1346: 1302: 1239: 1169: 1160: 1127:ManKai Common Lisp (MKCL) 1064: 2328:Bolt, Beranek and Newman 2258:Common Lisp the Language 1355:Common Lisp the Language 909:, 1988, Addison-Wesley. 859:10.3217/jucs-014-20-3370 523:COS, the C Object System 338:, CLOS does not enforce 182: 136:system. This means that 978:, 1993, The MIT Press. 959:, 1991, Digital Press, 2263:How to Design Programs 2102:Portable Standard Lisp 1748:Steel Bank Common Lisp 1713:Embeddable Common Lisp 1686:Armed Bear Common Lisp 1565:Higher-order functions 1490:Greenspun's tenth rule 1146:Steel Bank Common Lisp 1106:Embeddable Common Lisp 1079:Armed Bear Common Lisp 414:Circle-Ellipse Problem 28: 2572:Shriram Krishnamurthi 2274:Practical Common Lisp 2230:Common Lisp HyperSpec 1754:Symbolics Common Lisp 1730:Macintosh Common Lisp 1485:Common Lisp HyperSpec 1383:Practical Common Lisp 1259:Common Music Notation 1152:Symbolics Common Lisp 1123:Macintosh Common Lisp 1014:Common Lisp HyperSpec 657:'86. pp. 17–29. 620:programming languages 46:. CLOS is a powerful 26: 18:Clos (disambiguation) 2476:Robert Tappan Morris 2430:Robert Bruce Findler 2198:Space-cadet keyboard 1609:Tree data structures 1586:Read–eval–print loop 1003:Fundamentals of CLOS 588:, a Scheme with CLOS 570:, a Scheme with CLOS 479:multiple inheritance 394:multiple inheritance 35:is the facility for 16:For other uses, see 2218:Technical standards 1681:Allegro Common Lisp 936:, 1991, MIT Press. 663:10.1145/28697.28700 431:Metaobject Protocol 350:. To access it via 154:metaobject protocol 2582:Gerald Jay Sussman 2567:Matthias Felleisen 2519:Richard P. Gabriel 2450:Richard Greenblatt 2425:Matthias Felleisen 1708:Corman Common Lisp 1433:Richard P. Gabriel 1101:Corman Common Lisp 993:Richard P. Gabriel 543:, Scheme with CLOS 425:prototype language 29: 2730: 2729: 2670: 2669: 2666: 2665: 2658:Robin Popplestone 2577:Guy L. Steele Jr. 2544:Guy L. Steele Jr. 2389: 2388: 2304: 2303: 2172: 2171: 2062:Lisp Machine Lisp 1972: 1971: 1899: 1898: 1647: 1646: 1498: 1497: 1458:Guy L. Steele Jr. 1453:Robin Popplestone 1412:Guy L. Steele Jr. 1342: 1341: 1254:Common Lisp Music 842:(20): 3370–3388. 672:978-0-89791-204-4 634:; Kahn, Kenneth; 632:Bobrow, Daniel G. 600:in Chicken Scheme 336:dynamic languages 146:generic functions 134:multiple dispatch 96:generic functions 2760: 2720: 2719: 2710: 2709: 2700: 2699: 2690: 2680: 2679: 2524:Philip Greenspun 2496:Richard Stallman 2410:Daniel G. Bobrow 2398: 2397: 2313: 2312: 2248: 2247: 2215: 2214: 2137:Operating system 1908: 1907: 1667: 1666: 1658: 1657: 1543: 1542: 1525: 1518: 1511: 1502: 1501: 1438:Philip Greenspun 1400:Design committee 1167: 1166: 1051: 1044: 1037: 1028: 1027: 928:Daniel G. Bobrow 924:Jim des Rivieres 889: 884: 878: 877: 875: 874: 861: 851: 825: 819: 814: 808: 807: 805: 804: 799: 789: 779: 768: 762: 757: 751: 744: 738: 735: 721: 698: 696: 695: 689: 683:. Archived from 648: 636:Kiczales, Gregor 411: 376: 372: 368: 364: 353: 348:accessor methods 345: 330: 327: 324: 321: 318: 315: 312: 309: 306: 303: 300: 297: 294: 291: 288: 285: 282: 279: 276: 273: 270: 267: 264: 261: 258: 255: 252: 249: 246: 243: 240: 237: 234: 231: 228: 225: 222: 219: 216: 213: 210: 207: 204: 201: 198: 195: 192: 189: 186: 151: 128: 113: 109: 105: 101: 52:static languages 2768: 2767: 2763: 2762: 2761: 2759: 2758: 2757: 2733: 2732: 2731: 2726: 2662: 2639: 2635:Cynthia Solomon 2630:Mitchel Resnick 2591: 2553: 2500: 2454:Timothy P. Hart 2415:William Clinger 2405:Edmund Berkeley 2385: 2352: 2300: 2296:ProgramByDesign 2284: 2239: 2209: 2202: 2168: 2131: 1968: 1939: 1895: 1877: 1758: 1719:GNU Common Lisp 1702:CMU Common Lisp 1672: 1653:Implementations 1643: 1613: 1534: 1529: 1499: 1494: 1467: 1416: 1395: 1338: 1305: 1298: 1235: 1181:Library Manager 1156: 1112:GNU Common Lisp 1095:CMU Common Lisp 1066:Implementations 1060: 1055: 997:Linda DeMichiel 970:Andreas Paepcke 951:Molly M. Miller 920:Gregor Kiczales 897: 892: 885: 881: 872: 870: 849:10.1.1.523.2413 826: 822: 815: 811: 802: 800: 797:10.1.1.763.7946 777: 769: 765: 758: 754: 745: 741: 736: 732: 728: 718: 704:Salus, Peter H. 693: 691: 687: 673: 646: 640:Masinter, Larry 627: 625:Further reading 509:Gregor Kiczales 505: 468: 449:Gregor Kiczales 433: 418:design patterns 409: 379:class hierarchy 374: 370: 366: 362: 351: 343: 332: 331: 328: 325: 322: 319: 316: 313: 310: 307: 304: 301: 298: 295: 292: 289: 286: 283: 280: 277: 274: 271: 268: 265: 262: 259: 256: 253: 250: 247: 244: 241: 238: 235: 232: 229: 226: 223: 220: 217: 214: 211: 208: 205: 202: 199: 196: 193: 190: 187: 184: 149: 126: 111: 107: 103: 99: 84: 21: 12: 11: 5: 2766: 2756: 2755: 2750: 2745: 2728: 2727: 2675: 2672: 2671: 2668: 2667: 2664: 2663: 2661: 2660: 2655: 2649: 2647: 2641: 2640: 2638: 2637: 2632: 2627: 2625:Seymour Papert 2622: 2617: 2615:Wally Feurzeig 2612: 2610:Denison Bollay 2607: 2601: 2599: 2593: 2592: 2590: 2589: 2584: 2579: 2574: 2569: 2563: 2561: 2555: 2554: 2552: 2551: 2549:Daniel Weinreb 2546: 2541: 2536: 2531: 2521: 2516: 2510: 2508: 2502: 2501: 2499: 2498: 2493: 2488: 2483: 2478: 2473: 2468: 2463: 2460: 2455: 2452: 2447: 2442: 2437: 2432: 2427: 2422: 2420:R. Kent Dybvig 2417: 2412: 2407: 2401: 2395: 2391: 2390: 2387: 2386: 2384: 2383: 2378: 2373: 2367: 2360: 2358: 2354: 2353: 2351: 2350: 2345: 2340: 2335: 2330: 2325: 2323:Apple Computer 2319: 2317: 2310: 2306: 2305: 2302: 2301: 2299: 2298: 2292: 2290: 2286: 2285: 2283: 2282: 2276: 2271: 2266: 2260: 2254: 2252: 2245: 2241: 2240: 2238: 2237: 2232: 2227: 2221: 2219: 2212: 2204: 2203: 2201: 2200: 2195: 2194: 2193: 2182: 2180: 2174: 2173: 2170: 2169: 2167: 2162: 2157: 2148: 2141: 2139: 2133: 2132: 2130: 2129: 2124: 2119: 2114: 2109: 2104: 2099: 2094: 2089: 2084: 2079: 2074: 2069: 2064: 2059: 2054: 2049: 2044: 2039: 2034: 2029: 2020: 2015: 2010: 1994: 1989: 1984: 1979: 1973: 1970: 1969: 1967: 1966: 1961: 1956: 1949: 1947: 1941: 1940: 1938: 1937: 1932: 1927: 1922: 1916: 1914: 1905: 1904:Unstandardized 1901: 1900: 1897: 1896: 1894: 1893: 1887: 1885: 1879: 1878: 1876: 1875: 1870: 1865: 1860: 1855: 1850: 1840: 1837: 1832: 1827: 1825:MIT/GNU Scheme 1822: 1817: 1812: 1807: 1802: 1796: 1791: 1786: 1781: 1776: 1768: 1766: 1760: 1759: 1757: 1756: 1751: 1745: 1740: 1737: 1732: 1727: 1722: 1716: 1710: 1705: 1699: 1694: 1689: 1683: 1677: 1675: 1664: 1655: 1649: 1648: 1645: 1644: 1642: 1641: 1636: 1631: 1624: 1622: 1615: 1614: 1612: 1611: 1606: 1598: 1593: 1588: 1583: 1577: 1572: 1567: 1562: 1560:Dynamic typing 1557: 1552: 1546: 1540: 1536: 1535: 1528: 1527: 1520: 1513: 1505: 1496: 1495: 1493: 1492: 1487: 1482: 1475: 1473: 1469: 1468: 1466: 1465: 1463:Daniel Weinreb 1460: 1455: 1450: 1445: 1440: 1435: 1430: 1424: 1422: 1418: 1417: 1415: 1414: 1409: 1403: 1401: 1397: 1396: 1394: 1393: 1386: 1379: 1372: 1365: 1358: 1350: 1348: 1344: 1343: 1340: 1339: 1337: 1336: 1331: 1326: 1321: 1316: 1310: 1308: 1300: 1299: 1297: 1296: 1291: 1286: 1281: 1276: 1271: 1266: 1261: 1256: 1251: 1245: 1243: 1237: 1236: 1234: 1233: 1230: 1227: 1224: 1219: 1214: 1208: 1203: 1198: 1192: 1187: 1182: 1175: 1173: 1164: 1158: 1157: 1155: 1154: 1149: 1143: 1138: 1133: 1128: 1125: 1120: 1115: 1109: 1103: 1098: 1092: 1087: 1082: 1076: 1070: 1068: 1062: 1061: 1054: 1053: 1046: 1039: 1031: 1025: 1024: 1010: 1000: 986: 967: 944: 917: 896: 893: 891: 890: 879: 820: 809: 763: 752: 739: 729: 727: 724: 723: 722: 716: 699: 671: 626: 623: 622: 621: 612:S4 classes in 610: 607: 601: 595: 589: 583: 582:for MIT Scheme 577: 571: 565: 559: 553: 544: 538: 537:for Emacs Lisp 532: 529: 524: 504: 501: 467: 464: 432: 429: 423:CLOS is not a 183: 174: 173: 170: 167: 164: 83: 80: 9: 6: 4: 3: 2: 2765: 2754: 2751: 2749: 2746: 2744: 2741: 2740: 2738: 2725: 2724: 2715: 2714: 2705: 2704: 2695: 2694: 2689: 2685: 2684: 2673: 2659: 2656: 2654: 2651: 2650: 2648: 2646: 2642: 2636: 2633: 2631: 2628: 2626: 2623: 2621: 2618: 2616: 2613: 2611: 2608: 2606: 2603: 2602: 2600: 2598: 2594: 2588: 2587:Julie Sussman 2585: 2583: 2580: 2578: 2575: 2573: 2570: 2568: 2565: 2564: 2562: 2560: 2556: 2550: 2547: 2545: 2542: 2540: 2537: 2535: 2534:David A. Moon 2532: 2529: 2525: 2522: 2520: 2517: 2515: 2514:Scott Fahlman 2512: 2511: 2509: 2507: 2503: 2497: 2494: 2492: 2491:Steve Russell 2489: 2487: 2484: 2482: 2479: 2477: 2474: 2472: 2471:John McCarthy 2469: 2467: 2466:David Luckham 2464: 2461: 2459: 2456: 2453: 2451: 2448: 2446: 2443: 2441: 2438: 2436: 2435:Matthew Flatt 2433: 2431: 2428: 2426: 2423: 2421: 2418: 2416: 2413: 2411: 2408: 2406: 2403: 2402: 2399: 2396: 2392: 2382: 2379: 2377: 2374: 2371: 2368: 2365: 2362: 2361: 2359: 2355: 2349: 2346: 2344: 2341: 2339: 2336: 2334: 2331: 2329: 2326: 2324: 2321: 2320: 2318: 2314: 2311: 2309:Organizations 2307: 2297: 2294: 2293: 2291: 2287: 2280: 2277: 2275: 2272: 2270: 2267: 2264: 2261: 2259: 2256: 2255: 2253: 2249: 2246: 2242: 2236: 2233: 2231: 2228: 2226: 2223: 2222: 2220: 2216: 2213: 2211: 2205: 2199: 2196: 2192: 2189: 2188: 2187: 2184: 2183: 2181: 2179: 2175: 2166: 2163: 2161: 2158: 2156: 2152: 2149: 2147: 2146: 2142: 2140: 2138: 2134: 2128: 2125: 2123: 2120: 2118: 2115: 2113: 2110: 2108: 2105: 2103: 2100: 2098: 2095: 2093: 2090: 2088: 2085: 2083: 2080: 2078: 2075: 2073: 2070: 2068: 2065: 2063: 2060: 2058: 2055: 2053: 2050: 2048: 2045: 2043: 2040: 2038: 2035: 2033: 2030: 2028: 2024: 2021: 2019: 2016: 2014: 2011: 2008: 2007: 2002: 1998: 1995: 1993: 1990: 1988: 1985: 1983: 1980: 1978: 1975: 1974: 1965: 1962: 1960: 1957: 1954: 1951: 1950: 1948: 1946: 1942: 1936: 1933: 1931: 1928: 1926: 1923: 1921: 1918: 1917: 1915: 1913: 1909: 1906: 1902: 1892: 1889: 1888: 1886: 1884: 1880: 1874: 1871: 1869: 1866: 1864: 1861: 1859: 1856: 1854: 1851: 1848: 1844: 1841: 1839:Pocket Scheme 1838: 1836: 1833: 1831: 1828: 1826: 1823: 1821: 1818: 1816: 1813: 1811: 1808: 1806: 1803: 1800: 1797: 1795: 1792: 1790: 1787: 1785: 1782: 1780: 1777: 1775: 1774: 1770: 1769: 1767: 1765: 1761: 1755: 1752: 1749: 1746: 1744: 1741: 1738: 1736: 1733: 1731: 1728: 1726: 1723: 1720: 1717: 1714: 1711: 1709: 1706: 1703: 1700: 1698: 1695: 1693: 1690: 1687: 1684: 1682: 1679: 1678: 1676: 1674: 1668: 1665: 1663: 1659: 1656: 1654: 1650: 1640: 1637: 1635: 1632: 1629: 1626: 1625: 1623: 1620: 1616: 1610: 1607: 1605: 1602: 1599: 1597: 1596:S-expressions 1594: 1592: 1589: 1587: 1584: 1581: 1580:M-expressions 1578: 1576: 1573: 1571: 1568: 1566: 1563: 1561: 1558: 1556: 1553: 1551: 1548: 1547: 1544: 1541: 1537: 1533: 1526: 1521: 1519: 1514: 1512: 1507: 1506: 1503: 1491: 1488: 1486: 1483: 1480: 1477: 1476: 1474: 1470: 1464: 1461: 1459: 1456: 1454: 1451: 1449: 1446: 1444: 1443:David A. Moon 1441: 1439: 1436: 1434: 1431: 1429: 1428:Scott Fahlman 1426: 1425: 1423: 1419: 1413: 1410: 1408: 1405: 1404: 1402: 1398: 1392: 1391: 1387: 1385: 1384: 1380: 1378: 1377: 1373: 1371: 1370: 1366: 1364: 1363: 1359: 1357: 1356: 1352: 1351: 1349: 1345: 1335: 1332: 1330: 1327: 1325: 1322: 1320: 1317: 1315: 1312: 1311: 1309: 1307: 1301: 1295: 1292: 1290: 1287: 1285: 1282: 1280: 1277: 1275: 1272: 1270: 1267: 1265: 1262: 1260: 1257: 1255: 1252: 1250: 1247: 1246: 1244: 1242: 1238: 1231: 1228: 1225: 1223: 1220: 1218: 1215: 1212: 1209: 1207: 1204: 1202: 1199: 1196: 1193: 1191: 1188: 1186: 1183: 1180: 1177: 1176: 1174: 1172: 1168: 1165: 1163: 1159: 1153: 1150: 1147: 1144: 1142: 1139: 1137: 1134: 1132: 1129: 1126: 1124: 1121: 1119: 1116: 1113: 1110: 1107: 1104: 1102: 1099: 1096: 1093: 1091: 1088: 1086: 1083: 1080: 1077: 1075: 1072: 1071: 1069: 1067: 1063: 1059: 1052: 1047: 1045: 1040: 1038: 1033: 1032: 1029: 1023: 1022: 1016: 1015: 1011: 1008: 1004: 1001: 998: 994: 990: 987: 985: 984:0-262-16136-2 981: 977: 976: 971: 968: 966: 965:1-55558-064-5 962: 958: 957: 952: 948: 947:Jo A. Lawless 945: 943: 942:0-262-61074-4 939: 935: 934: 929: 925: 921: 918: 916: 915:0-201-17589-4 912: 908: 907: 902: 899: 898: 888: 883: 869: 865: 860: 855: 850: 845: 841: 837: 836: 831: 824: 818: 813: 798: 793: 788: 783: 776: 775: 767: 761: 756: 749: 743: 734: 730: 719: 717:1-57870-011-6 713: 709: 705: 700: 690:on 2022-08-17 686: 682: 678: 674: 668: 664: 660: 656: 652: 645: 641: 637: 633: 629: 628: 619: 615: 611: 608: 606: 602: 599: 596: 593: 590: 587: 584: 581: 578: 575: 572: 569: 566: 563: 560: 558: 554: 552: 548: 545: 542: 539: 536: 533: 530: 528: 525: 522: 521: 520: 518: 514: 510: 500: 498: 494: 490: 486: 484: 480: 476: 472: 463: 461: 456: 454: 450: 446: 442: 438: 428: 426: 421: 419: 415: 406: 401: 399: 395: 390: 387: 382: 380: 359: 357: 349: 341: 340:encapsulation 337: 181: 180:For example, 178: 171: 168: 165: 162: 161: 160: 157: 155: 147: 142: 139: 135: 130: 124: 120: 115: 112:make-instance 97: 93: 89: 79: 77: 73: 69: 65: 61: 57: 53: 49: 45: 42: 38: 34: 25: 19: 2721: 2711: 2701: 2691: 2681: 2653:Rod Burstall 2620:Brian Harvey 2186:Lisp machine 2143: 2004: 1771: 1662:Standardized 1627: 1601:Self-hosting 1582:(deprecated) 1570:Linked lists 1555:Conditionals 1478: 1388: 1381: 1374: 1367: 1360: 1353: 1347:Publications 1306:environments 1241:Applications 1190:AllegroServe 1185:AllegroCache 1020: 1012: 973: 954: 931: 904: 882: 871:. Retrieved 839: 833: 823: 812: 801:. Retrieved 773: 766: 755: 742: 733: 707: 692:. Retrieved 685:the original 650: 576:, for Scheme 519:facilities: 512: 506: 487: 475:Lisp Machine 469: 459: 457: 434: 422: 410:change-class 404: 402: 392:CLOS allows 391: 385: 383: 360: 333: 179: 175: 158: 143: 131: 119:superclasses 116: 85: 32: 30: 2743:Common Lisp 2605:Hal Abelson 2539:Kent Pitman 2506:Common Lisp 2458:Louis Hodes 2445:Paul Graham 2440:Phyllis Fox 2210:of practice 2191:TI Explorer 1784:Chez Scheme 1634:CommonLoops 1448:Kent Pitman 1304:Development 1141:Scieneer CL 1058:Common Lisp 1019:Chapter 7: 1007:Nick Levine 901:Sonya Keene 568:Sagittarius 497:Common Lisp 489:CommonLoops 441:metaclasses 68:CommonLoops 64:MIT Flavors 44:Common Lisp 2737:Categories 2486:David Park 2481:Joel Moses 2462:Mike Levin 2338:Lucid Inc. 2289:Curriculum 2122:Spice Lisp 2023:Franz Lisp 2013:Emacs Lisp 1873:TinyScheme 1697:Clozure CL 1319:Clozure CL 1314:Allegro CL 1090:Clozure CL 1074:Allegro CL 895:Literature 873:2022-03-17 803:2022-03-17 726:References 694:2022-03-17 603:VCLOS for 437:Metaobject 352:slot-value 344:slot-value 191:defgeneric 132:CLOS is a 127:slot-value 108:defgeneric 76:Emacs Lisp 2528:10th rule 2357:Education 2343:Symbolics 2333:Harlequin 2244:Education 2208:Community 2037:Interlisp 1853:Scheme 48 1830:MultiLisp 1805:GNU Guile 1725:LispWorks 1591:Recursion 1329:LispWorks 1289:OpenMusic 1179:Quicklisp 1171:Libraries 1118:LispWorks 844:CiteSeerX 792:CiteSeerX 787:1003.2547 609:Tiny CLOS 594:in Racket 551:GNU Guile 493:Interlisp 405:structure 272:defmethod 215:defmethod 123:metaclass 104:defmethod 2723:Category 2713:Category 2316:Business 2178:Hardware 2127:Zetalisp 2112:S-1 Lisp 2097:Picolisp 1987:BBN LISP 1982:AutoLISP 1930:StarLogo 1891:OpenLisp 1847:features 1604:compiler 1539:Features 1232:Weblocks 1229:Ironclad 1201:Caveman2 1162:Software 868:12032836 681:62631315 555:ILOS in 513:de facto 100:defclass 82:Features 54:such as 2703:Commons 2372:(CSAIL) 2348:Xanalys 2269:On Lisp 2092:PC-LISP 2082:newLISP 2067:Maclisp 2027:PC-LISP 2006:history 1992:Clojure 1955:(POP-1) 1935:UCBLogo 1925:NetLogo 1920:MSWLogo 1815:JScheme 1789:Chicken 1773:History 1704:(CMUCL) 1639:Flavors 1621:systems 1376:On Lisp 1324:Hemlock 1294:StumpWM 1284:N-World 1222:CL-HTTP 1097:(CMUCL) 1021:Objects 746:In the 706:(ed.). 592:Swindle 471:Flavors 375::around 371::around 363::before 356:package 284:integer 227:integer 150:deftype 138:methods 92:classes 88:methods 48:dynamic 2559:Scheme 2394:People 2281:(SICP) 2265:(HTDP) 2160:Genera 2155:McCLIM 2052:LeLisp 2018:EuLisp 1964:POP-11 1953:COWSEL 1883:ISLISP 1843:Racket 1810:Ikarus 1801:(GOAL) 1794:Gambit 1779:Bigloo 1764:Scheme 1750:(SBCL) 1743:Poplog 1739:Movitz 1688:(ABCL) 1671:Common 1630:(CLOS) 1619:Object 1575:Macros 1481:(CLOS) 1421:People 1279:Maxima 1269:FriCAS 1213:(CLIM) 1197:(ASDF) 1148:(SBCL) 1136:Poplog 1081:(ABCL) 982:  963:  940:  926:, and 913:  866:  846:  794:  714:  679:  669:  655:OOPSLA 586:STklos 574:ScmObj 562:Meroon 557:ISLISP 541:Gauche 483:mixins 460:Closer 369:, and 367::after 106:, and 72:EuLisp 2693:Books 2366:(MIT) 2251:Books 2235:X3J13 2117:SKILL 2077:MLisp 2047:*Lisp 2001:Apple 1997:Dylan 1959:POP-2 1721:(GCL) 1715:(ECL) 1692:CLISP 1472:Other 1407:X3J13 1334:SLIME 1274:Mirai 1217:CLSQL 1206:CLiki 1114:(GCL) 1108:(ECL) 1085:CLISP 864:S2CID 782:arXiv 778:(PDF) 688:(PDF) 677:S2CID 647:(PDF) 605:Skill 598:COOPS 547:GOOPS 535:EIEIO 527:Dylan 323:=> 260:=> 2683:List 2597:Logo 2165:Scsh 2145:List 1912:Logo 1863:SIOD 1835:Pico 1820:Kawa 1735:Mocl 1673:Lisp 1264:ICAD 1249:ACL2 1131:Mocl 995:and 980:ISBN 961:ISBN 949:and 938:ISBN 911:ISBN 712:ISBN 667:ISBN 616:and 481:and 384:The 296:real 66:and 60:Java 41:ANSI 31:The 2645:POP 2107:RPL 2087:NIL 2072:MDL 2057:LFE 1977:Arc 1945:POP 1858:SCM 1226:CLX 1005:by 991:by 854:doi 659:doi 580:SOS 549:in 517:OOP 317:2.0 254:2.0 74:or 58:or 56:C++ 39:in 2739:: 2153:, 2032:Hy 2025:, 2003:, 1017:, 972:, 953:, 930:, 922:, 903:, 862:. 852:. 840:14 838:. 832:. 790:. 780:. 675:. 665:. 653:. 649:. 638:; 365:, 299:)) 278:(( 221:(( 206:)) 114:. 102:, 90:, 78:. 2530:) 2526:( 2009:) 1999:( 1868:T 1849:) 1845:( 1524:e 1517:t 1510:v 1050:e 1043:t 1036:v 876:. 856:: 806:. 784:: 720:. 697:. 661:: 618:R 614:S 326:2 320:) 314:1 311:f 308:( 305:) 302:2 293:y 290:( 287:) 281:x 275:f 269:( 263:1 257:) 251:1 248:f 245:( 242:) 239:1 236:) 233:y 230:) 224:x 218:f 212:( 203:y 200:x 197:( 194:f 188:( 20:.

Index

Clos (disambiguation)

object-oriented programming
ANSI
Common Lisp
dynamic
static languages
C++
Java
MIT Flavors
CommonLoops
EuLisp
Emacs Lisp
methods
classes
generic functions
superclasses
metaclass
multiple dispatch
methods
generic functions
metaobject protocol
dynamic languages
encapsulation
accessor methods
package
class hierarchy
multiple inheritance
diamond inheritance problems
Circle-Ellipse Problem

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

↑