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