<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Common_Lisp_Object_System</id>
	<title>Common Lisp Object System - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Common_Lisp_Object_System"/>
	<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Common_Lisp_Object_System&amp;action=history"/>
	<updated>2026-05-04T18:50:40Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Common_Lisp_Object_System&amp;diff=4540436&amp;oldid=prev</id>
		<title>imported&gt;Nick Levine: /* Literature */ definitely not a link to the correct Nick Levine</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Common_Lisp_Object_System&amp;diff=4540436&amp;oldid=prev"/>
		<updated>2025-12-18T08:34:29Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Literature: &lt;/span&gt; definitely not a link to the correct Nick Levine&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Previous revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:34, 18 December 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l97&quot;&gt;Line 97:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 97:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Andreas Paepcke]], &amp;#039;&amp;#039;[[Object-Oriented Programming: the CLOS Perspective]]&amp;#039;&amp;#039;, 1993, The MIT Press. {{ISBN|0-262-16136-2}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Andreas Paepcke]], &amp;#039;&amp;#039;[[Object-Oriented Programming: the CLOS Perspective]]&amp;#039;&amp;#039;, 1993, The MIT Press. {{ISBN|0-262-16136-2}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://www.dreamsongs.com/Files/ECOOP.pdf The Common Lisp Object System: An Overview] by [[Richard P. Gabriel]] and [[Linda DeMichiel]] provides a good introduction to the motivation for defining classes by means of generic functions.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://www.dreamsongs.com/Files/ECOOP.pdf The Common Lisp Object System: An Overview] by [[Richard P. Gabriel]] and [[Linda DeMichiel]] provides a good introduction to the motivation for defining classes by means of generic functions.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://cl-cookbook.sourceforge.net/clos-tutorial/ Fundamentals of CLOS] by &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/del&gt;Nick Levine&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]] &lt;/del&gt;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.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://cl-cookbook.sourceforge.net/clos-tutorial/ Fundamentals of CLOS] by Nick Levine 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.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;[[Common Lisp HyperSpec]]&amp;#039;&amp;#039;, [http://www.lispworks.com/documentation/HyperSpec/Body/07_.htm Chapter 7: &amp;#039;&amp;#039;Objects&amp;#039;&amp;#039;]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;[[Common Lisp HyperSpec]]&amp;#039;&amp;#039;, [http://www.lispworks.com/documentation/HyperSpec/Body/07_.htm Chapter 7: &amp;#039;&amp;#039;Objects&amp;#039;&amp;#039;]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>imported&gt;Nick Levine</name></author>
	</entry>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Common_Lisp_Object_System&amp;diff=3445619&amp;oldid=prev</id>
		<title>imported&gt;TarnishedPath: Per page move: Changed link from Class (computer programming) to Class (programming) using MovePlus</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Common_Lisp_Object_System&amp;diff=3445619&amp;oldid=prev"/>
		<updated>2025-10-17T08:46:30Z</updated>

		<summary type="html">&lt;p&gt;Per page move: Changed link from &lt;a href=&quot;/wiki143/index.php?title=Class_(computer_programming)&quot; class=&quot;mw-redirect&quot; title=&quot;Class (computer programming)&quot;&gt;Class (computer programming)&lt;/a&gt; to &lt;a href=&quot;/wiki143/index.php?title=Class_(programming)&quot; title=&quot;Class (programming)&quot;&gt;Class (programming)&lt;/a&gt; using &lt;a href=&quot;/wiki143/index.php?title=User:TarnishedPath/MovePlus.js&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:TarnishedPath/MovePlus.js (page does not exist)&quot;&gt;MovePlus&lt;/a&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Previous revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:46, 17 October 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot;&gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Features ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Features ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The basic building blocks of CLOS are [[method (computer programming)|method]]s, [[Class (&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;computer &lt;/del&gt;programming)|class]]es, instances of those classes, and [[generic function]]s.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The basic building blocks of CLOS are [[method (computer programming)|method]]s, [[Class (programming)|class]]es, instances of those classes, and [[generic function]]s.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CLOS provides macros to define those: &amp;lt;code&amp;gt;defclass&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;defmethod&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;defgeneric&amp;lt;/code&amp;gt;. Instances are created with the method &amp;lt;code&amp;gt;make-instance&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CLOS provides macros to define those: &amp;lt;code&amp;gt;defclass&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;defmethod&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;defgeneric&amp;lt;/code&amp;gt;. Instances are created with the method &amp;lt;code&amp;gt;make-instance&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l97&quot;&gt;Line 97:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 97:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Andreas Paepcke]], &amp;#039;&amp;#039;[[Object-Oriented Programming: the CLOS Perspective]]&amp;#039;&amp;#039;, 1993, The MIT Press. {{ISBN|0-262-16136-2}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Andreas Paepcke]], &amp;#039;&amp;#039;[[Object-Oriented Programming: the CLOS Perspective]]&amp;#039;&amp;#039;, 1993, The MIT Press. {{ISBN|0-262-16136-2}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://www.dreamsongs.com/Files/ECOOP.pdf The Common Lisp Object System: An Overview] by [[Richard P. Gabriel]] and [[Linda DeMichiel]] provides a good introduction to the motivation for defining classes by means of generic functions.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://www.dreamsongs.com/Files/ECOOP.pdf The Common Lisp Object System: An Overview] by [[Richard P. Gabriel]] and [[Linda DeMichiel]] provides a good introduction to the motivation for defining classes by means of generic functions.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;http&lt;/del&gt;://cl-cookbook.sourceforge.net/clos-tutorial/ Fundamentals of CLOS] by [[Nick Levine]] 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.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;https&lt;/ins&gt;://cl-cookbook.sourceforge.net/clos-tutorial/ Fundamentals of CLOS] by [[Nick Levine]] 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.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;[[Common Lisp HyperSpec]]&amp;#039;&amp;#039;, [http://www.lispworks.com/documentation/HyperSpec/Body/07_.htm Chapter 7: &amp;#039;&amp;#039;Objects&amp;#039;&amp;#039;]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;[[Common Lisp HyperSpec]]&amp;#039;&amp;#039;, [http://www.lispworks.com/documentation/HyperSpec/Body/07_.htm Chapter 7: &amp;#039;&amp;#039;Objects&amp;#039;&amp;#039;]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>imported&gt;TarnishedPath</name></author>
	</entry>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Common_Lisp_Object_System&amp;diff=1686905&amp;oldid=prev</id>
		<title>imported&gt;TheAwesomeHwyh: /* CLOS in other programming languages */ missed two, whoops</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Common_Lisp_Object_System&amp;diff=1686905&amp;oldid=prev"/>
		<updated>2025-06-27T19:48:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;CLOS in other programming languages: &lt;/span&gt; missed two, whoops&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Previous revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:48, 27 June 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l2&quot;&gt;Line 2:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 2:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Other uses|Clos (disambiguation)}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Other uses|Clos (disambiguation)}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:Method-combination.png|thumb|right|Standard method combination in ANSI common lisp]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:Method-combination.png|thumb|right|Standard method combination in ANSI common lisp]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &#039;&#039;&#039;Common Lisp Object System (CLOS)&#039;&#039;&#039; is the facility for [[object-oriented programming]] in [[American National Standards Institute|ANSI]] [[Common Lisp]]. CLOS is a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;powerful &lt;/del&gt;[[dynamic programming language|dynamic]] object system which differs radically from the OOP facilities found in more [[static language]]s such as [[C++]] or [[Java (programming language)|Java]]. CLOS was inspired by earlier Lisp object systems such as [[Flavors (computer science)|MIT Flavors]] and [[CommonLoops]], 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 [[EuLisp]] or [[Emacs Lisp]].&amp;lt;ref&amp;gt;&quot;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.&quot; p. 110 of Veitch 1998&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &#039;&#039;&#039;Common Lisp Object System (CLOS)&#039;&#039;&#039; is the facility for [[object-oriented programming]] in [[American National Standards Institute|ANSI]] [[Common Lisp]]. CLOS is a [[dynamic programming language|dynamic]] object system which differs radically from the OOP facilities found in more [[static language]]s such as [[C++]] or [[Java (programming language)|Java]]. CLOS was inspired by earlier Lisp object systems such as [[Flavors (computer science)|MIT Flavors]] and [[CommonLoops]], 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 [[EuLisp]] or [[Emacs Lisp]].&amp;lt;ref&amp;gt;&quot;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.&quot; p. 110 of Veitch 1998&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Features ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Features ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l69&quot;&gt;Line 69:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 69:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Dylan (programming language)|Dylan]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Dylan (programming language)|Dylan]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Dynace, a (largely) CLOS implementation in C&amp;lt;ref&amp;gt;[https://github.com/blakemcbride/Dynace Dynace Object Oriented Extension To C]&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Dynace, a (largely) CLOS implementation in C&amp;lt;ref&amp;gt;[https://github.com/blakemcbride/Dynace Dynace Object Oriented Extension To C]&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[https://www.gnu.org/software/emacs/manual/html_mono/eieio.html &lt;/del&gt;EIEIO&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;] &lt;/del&gt;for Emacs Lisp&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* EIEIO for Emacs Lisp&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[http://practical-scheme.net/gauche/ &lt;/del&gt;Gauche&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;, Scheme with CLOS&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Gauche, Scheme with CLOS&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[https://www.gnu.org/software/guile/manual/html_node/&lt;/del&gt;GOOPS&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.html#GOOPS GOOPS] &lt;/del&gt;in [[GNU Guile]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* GOOPS in [[GNU Guile]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* ILOS in [[ISLISP]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* ILOS in [[ISLISP]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[https://pages.lip6.fr/Christian.Queinnec/WWW/&lt;/del&gt;Meroon&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.html Meroon]&lt;/del&gt;, an Object System in Scheme&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Meroon, an Object System in Scheme&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[https://ktakashi.github.io/sagittarius-ref.html &lt;/del&gt;Sagittarius&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;, a Scheme with CLOS&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Sagittarius, a Scheme with CLOS&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[http://www.ccs.neu.edu/home/dorai/scmobj/scmobj.html &lt;/del&gt;ScmObj&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;, for Scheme&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* ScmObj, for Scheme&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[https://www.gnu.org/software/mit-scheme/documentation/mit-scheme-sos/ &lt;/del&gt;SOS&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;] &lt;/del&gt;for MIT Scheme&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* SOS for MIT Scheme&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[http://www.stklos.net &lt;/del&gt;STklos&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;, a Scheme with CLOS&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* STklos, a Scheme with CLOS&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[http://docs.racket-lang.org/swindle/ &lt;/del&gt;Swindle&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;] &lt;/del&gt;in Racket&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Swindle in Racket&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[http://wiki.call-cc.org/eggref/4/coops &lt;/del&gt;COOPS&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;] &lt;/del&gt;in Chicken Scheme&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* COOPS in Chicken Scheme&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* VCLOS for [[Cadence SKILL|Skill]]&amp;lt;ref&amp;gt;{{cite journal |last1=Newton |first1=Jim |last2=Rhodes |first2=Christophe |date=2008-11-28 |df=dmy |title=Custom Specializers in Object-Oriented Lisp |work=[[Journal of Universal Computer Science]] |volume=14 |issue=20 |pages=3370-3388 |doi=10.3217/jucs-014-20-3370 |citeseerx=10.1.1.523.2413 |s2cid=12032836 |doi-access=free |url=https://www.jucs.org/jucs_14_20/custom_specializers_in_object.html |access-date=2022-03-17}}&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* VCLOS for [[Cadence SKILL|Skill]]&amp;lt;ref&amp;gt;{{cite journal |last1=Newton |first1=Jim |last2=Rhodes |first2=Christophe |date=2008-11-28 |df=dmy |title=Custom Specializers in Object-Oriented Lisp |work=[[Journal of Universal Computer Science]] |volume=14 |issue=20 |pages=3370-3388 |doi=10.3217/jucs-014-20-3370 |citeseerx=10.1.1.523.2413 |s2cid=12032836 |doi-access=free |url=https://www.jucs.org/jucs_14_20/custom_specializers_in_object.html |access-date=2022-03-17}}&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Tiny CLOS&amp;lt;ref&amp;gt;[http://community.schemewiki.org/?Tiny-CLOS Tiny CLOS, developed by Gregor Kiczales ]&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Tiny CLOS&amp;lt;ref&amp;gt;[http://community.schemewiki.org/?Tiny-CLOS Tiny CLOS, developed by Gregor Kiczales ]&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>imported&gt;TheAwesomeHwyh</name></author>
	</entry>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Common_Lisp_Object_System&amp;diff=135470&amp;oldid=prev</id>
		<title>185.7.93.150 at 11:21, 6 April 2025</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Common_Lisp_Object_System&amp;diff=135470&amp;oldid=prev"/>
		<updated>2025-04-06T11:21:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Short description|Feature in the programming language Lisp}}&lt;br /&gt;
{{Other uses|Clos (disambiguation)}}&lt;br /&gt;
[[File:Method-combination.png|thumb|right|Standard method combination in ANSI common lisp]]&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Common Lisp Object System (CLOS)&amp;#039;&amp;#039;&amp;#039; is the facility for [[object-oriented programming]] in [[American National Standards Institute|ANSI]] [[Common Lisp]]. CLOS is a powerful [[dynamic programming language|dynamic]] object system which differs radically from the OOP facilities found in more [[static language]]s such as [[C++]] or [[Java (programming language)|Java]]. CLOS was inspired by earlier Lisp object systems such as [[Flavors (computer science)|MIT Flavors]] and [[CommonLoops]], 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 [[EuLisp]] or [[Emacs Lisp]].&amp;lt;ref&amp;gt;&amp;quot;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.&amp;quot; p. 110 of Veitch 1998&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
The basic building blocks of CLOS are [[method (computer programming)|method]]s, [[Class (computer programming)|class]]es, instances of those classes, and [[generic function]]s.&lt;br /&gt;
CLOS provides macros to define those: &amp;lt;code&amp;gt;defclass&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;defmethod&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;defgeneric&amp;lt;/code&amp;gt;. Instances are created with the method &amp;lt;code&amp;gt;make-instance&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Classes can have multiple [[superclass (computer science)|superclass]]es, a list of slots (member variables in C++/Java parlance) and a special [[metaclass]]. 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 &amp;lt;code&amp;gt;slot-value&amp;lt;/code&amp;gt;. 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.&lt;br /&gt;
&lt;br /&gt;
CLOS is a [[multiple dispatch]] system. This means that [[Method (computer science)|method]]s 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 &amp;quot;belong&amp;quot; to classes; classes do not provide a namespace for generic functions or methods. Methods are defined separately from classes, and they have no special access (e.g. &amp;quot;this&amp;quot;, &amp;quot;self&amp;quot;, or &amp;quot;protected&amp;quot;) to class slots.&lt;br /&gt;
&lt;br /&gt;
Methods in CLOS are grouped into [[generic function]]s. 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 &amp;lt;code&amp;gt;deftype&amp;lt;/code&amp;gt;). However, most Common Lisp implementations provide a [[metaobject protocol]] which allows generic functions to provide application specific specialization and dispatch rules.&lt;br /&gt;
&lt;br /&gt;
Dispatch in CLOS is also different from most OO languages:&lt;br /&gt;
&lt;br /&gt;
# Given a list of arguments, a list of applicable methods is determined.&lt;br /&gt;
# This list is sorted according to the specificity of their parameter specializers.&lt;br /&gt;
# Selected methods from this list are then combined into an effective method using the method combination used by the generic function.&lt;br /&gt;
# The effective method is then called with the original arguments.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot;&amp;gt;&lt;br /&gt;
; Declare the common argument structure prototype.&lt;br /&gt;
(defgeneric f (x y))&lt;br /&gt;
&lt;br /&gt;
; Define an implementation for (f integer y), where y matches all types.&lt;br /&gt;
(defmethod f ((x integer) y)&lt;br /&gt;
  1)&lt;br /&gt;
&lt;br /&gt;
(f 1 2.0) =&amp;gt; 1&lt;br /&gt;
&lt;br /&gt;
; Define an implementation for (f integer real).&lt;br /&gt;
(defmethod f ((x integer) (y real))&lt;br /&gt;
  2)&lt;br /&gt;
&lt;br /&gt;
(f 1 2.0) =&amp;gt; 2  ; Dispatch changed at runtime.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Like the OO systems in most [[Dynamic programming language|dynamic languages]], CLOS does not enforce [[Encapsulation (computer science)|encapsulation]]. Any slot can be accessed using the &amp;lt;code&amp;gt;slot-value&amp;lt;/code&amp;gt; function or via (optionally auto-generated) [[accessor method]]s. To access it via &amp;lt;code&amp;gt;slot-value&amp;lt;/code&amp;gt; you have to know the name of the slot. CL programmers use the language&amp;#039;s [[Namespace|package]] facility to declare which functions or data structures are intended for export.&lt;br /&gt;
&lt;br /&gt;
Apart from normal (&amp;quot;primary&amp;quot;) methods, there also are &amp;lt;code&amp;gt;:before&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;:after&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;:around&amp;lt;/code&amp;gt; &amp;quot;auxiliary&amp;quot; methods. The former two are invoked prior to, or after the primary method, in a particular order based on the class hierarchy. An &amp;lt;code&amp;gt;:around&amp;lt;/code&amp;gt; method can control whether the primary method is executed at all. Additionally, the programmer can specify whether all possible primary methods along the [[Hierarchy (object-oriented programming)|class hierarchy]] should be called or just the one providing the closest match.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;Standard Method-Combination&amp;#039;&amp;#039; 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.&lt;br /&gt;
&lt;br /&gt;
CLOS allows [[multiple inheritance]]. When the default order in which methods are executed in multiple inheritance is not correct, the programmer may resolve the [[diamond problem|diamond inheritance problems]] by specifying the order of method combinations.&lt;br /&gt;
&lt;br /&gt;
CLOS is dynamic, meaning that not only the contents, but also the &amp;#039;&amp;#039;structure&amp;#039;&amp;#039; 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 &amp;lt;code&amp;gt;change-class&amp;lt;/code&amp;gt; operator. CLOS also allows one to add, redefine and remove methods at runtime. The [[Circle-ellipse problem|Circle-Ellipse Problem]] is readily solved in CLOS, and most OOP [[Design pattern (computer science)|design patterns]] either disappear or are qualitatively simpler.&amp;lt;ref&amp;gt;In the [http://norvig.com/design-patterns/ Design Patterns in Dynamic Languages] slides, Peter Norvig presents his findings that 16 out of 23 design patterns taken from various textbooks are either &amp;quot;invisible or simpler&amp;quot; in Dylan or Common Lisp than in C++.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CLOS is not a [[Prototype-based language|prototype language]]: classes must be defined before objects can be instantiated as members of that class.&lt;br /&gt;
&lt;br /&gt;
== Metaobject Protocol ==&lt;br /&gt;
Outside of the ANSI Common Lisp standard, there is a widely implemented extension to CLOS called the [[Metaobject]] 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 [[metaclass]]es, and allows the definition of new metaclasses and the modification of all CLOS behavior. The flexibility of the CLOS MOP prefigures [[aspect-oriented programming]], which was later developed by some of the same engineers, such as [[Gregor Kiczales]]. 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 [[The Art of the Metaobject Protocol]] describes the use and implementation of the CLOS MOP.&lt;br /&gt;
&lt;br /&gt;
The various Common Lisp implementations have slightly different support for the Meta-Object Protocol. The &amp;#039;&amp;#039;Closer&amp;#039;&amp;#039;&amp;lt;ref&amp;gt;[http://common-lisp.net/project/closer/closer-mop.html Closer Project: Closer to MOP]&amp;lt;/ref&amp;gt; project aims to provide the missing features.&lt;br /&gt;
&lt;br /&gt;
== Influences from older Lisp-based object systems ==&lt;br /&gt;
[[Flavors (programming language)|Flavors]] (and its successor New Flavors) was the object system on the MIT [[Lisp Machine]]. Large parts of the Lisp Machine operating systems and many applications for it use Flavors or New Flavors. Flavors introduced [[multiple inheritance]] and [[mixins]], 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.&lt;br /&gt;
&lt;br /&gt;
[[CommonLoops]] was the successor of LOOPS  (from Xerox [[Interlisp]]-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 [[Common Lisp]] implementations. PCL is implemented mostly in portable Common Lisp with only a few system dependent parts.&lt;br /&gt;
&lt;br /&gt;
== CLOS in other programming languages ==&lt;br /&gt;
Because of the power and expressivity of CLOS, as well as the historical availability of Tiny CLOS (a simplified portable CLOS implementation written by [[Gregor Kiczales]] for use with Scheme), CLOS-like MOP-based object systems have become the &amp;#039;&amp;#039;de facto&amp;#039;&amp;#039; norm in most Lisp dialect implementations, as well as finding their way into some other languages&amp;#039; [[object-oriented programming|OOP]] facilities:&lt;br /&gt;
&lt;br /&gt;
* COS, the C Object System&amp;lt;ref&amp;gt;{{cite conference |last=Deniau |first=Laurent |date=2010-03-12 |df=dmy |title=The C Object System: Using C as a High-Level Object-Oriented Language |arxiv=1003.2547 |citeseerx=10.1.1.763.7946 |doi=&amp;lt;!-- --&amp;gt; |url=https://ldeniau.web.cern.ch/ldeniau/html/cos-oopsla09-draft.pdf |access-date=2022-03-17}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Dylan (programming language)|Dylan]]&lt;br /&gt;
* Dynace, a (largely) CLOS implementation in C&amp;lt;ref&amp;gt;[https://github.com/blakemcbride/Dynace Dynace Object Oriented Extension To C]&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [https://www.gnu.org/software/emacs/manual/html_mono/eieio.html EIEIO] for Emacs Lisp&lt;br /&gt;
* [http://practical-scheme.net/gauche/ Gauche], Scheme with CLOS&lt;br /&gt;
* [https://www.gnu.org/software/guile/manual/html_node/GOOPS.html#GOOPS GOOPS] in [[GNU Guile]]&lt;br /&gt;
* ILOS in [[ISLISP]]&lt;br /&gt;
* [https://pages.lip6.fr/Christian.Queinnec/WWW/Meroon.html Meroon], an Object System in Scheme&lt;br /&gt;
* [https://ktakashi.github.io/sagittarius-ref.html Sagittarius], a Scheme with CLOS&lt;br /&gt;
* [http://www.ccs.neu.edu/home/dorai/scmobj/scmobj.html ScmObj], for Scheme&lt;br /&gt;
* [https://www.gnu.org/software/mit-scheme/documentation/mit-scheme-sos/ SOS] for MIT Scheme&lt;br /&gt;
* [http://www.stklos.net STklos], a Scheme with CLOS&lt;br /&gt;
* [http://docs.racket-lang.org/swindle/ Swindle] in Racket&lt;br /&gt;
* [http://wiki.call-cc.org/eggref/4/coops COOPS] in Chicken Scheme&lt;br /&gt;
* VCLOS for [[Cadence SKILL|Skill]]&amp;lt;ref&amp;gt;{{cite journal |last1=Newton |first1=Jim |last2=Rhodes |first2=Christophe |date=2008-11-28 |df=dmy |title=Custom Specializers in Object-Oriented Lisp |work=[[Journal of Universal Computer Science]] |volume=14 |issue=20 |pages=3370-3388 |doi=10.3217/jucs-014-20-3370 |citeseerx=10.1.1.523.2413 |s2cid=12032836 |doi-access=free |url=https://www.jucs.org/jucs_14_20/custom_specializers_in_object.html |access-date=2022-03-17}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Tiny CLOS&amp;lt;ref&amp;gt;[http://community.schemewiki.org/?Tiny-CLOS Tiny CLOS, developed by Gregor Kiczales ]&amp;lt;/ref&amp;gt;&lt;br /&gt;
* S4 classes in [[S_(programming_language)#S4|S]] and [[R_(programming_language)|R]] programming languages&lt;br /&gt;
&lt;br /&gt;
== Further reading ==&lt;br /&gt;
* {{cite conference |last1=Bobrow |first1=Daniel G. |author-link1=Daniel G. Bobrow |last2=Kahn |first2=Kenneth |last3=Kiczales |first3=Gregor |author-link3=Gregor Kiczales |last4=Masinter |first4=Larry |author-link4=Larry Masinter |last5=Stefik |first5=Mark |last6=Zdybel |first6=Frank |date=June 1986 |title=CommonLoops: Merging Lisp and Object-Oriented Programming |book-title=Conference proceedings on Object-oriented Programming Systems Languages and Applications |pages=17–29 |isbn=978-0-89791-204-4 |conference=[[OOPSLA]] &amp;#039;86 |doi=10.1145/28697.28700 |s2cid=62631315 |url=https://interlisp.org/docs/1986-commonloops.pdf |access-date=2022-03-17 |archive-url=https://web.archive.org/web/20220817140051/https://interlisp.org/docs/1986-commonloops.pdf |archive-date=2022-08-17 |url-status=dead}}&lt;br /&gt;
* {{cite book |last1=Veitch |first1=Jim |date=1998 |chapter=A History and Description of CLOS |editor-last1=Salus |editor-first1=Peter H. |editor-link1=Peter H. Salus |title=Handbook of Programming Languages, Volume IV: Functional and Logic Programming Languages |edition=1st |pages=107–158 |publisher=Macmillan Technical Publishing |isbn=1-57870-011-6}}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literature ==&lt;br /&gt;
* [[Sonya Keene]], &amp;#039;&amp;#039;[[Object-Oriented Programming in Common Lisp: A Programmer&amp;#039;s Guide to CLOS]]&amp;#039;&amp;#039;, 1988, Addison-Wesley. {{ISBN|0-201-17589-4}}&lt;br /&gt;
* [[Gregor Kiczales]], [[Jim des Rivieres]], and [[Daniel G. Bobrow]], &amp;#039;&amp;#039;[[The Art of the Metaobject Protocol]]&amp;#039;&amp;#039;, 1991, MIT Press. {{ISBN|0-262-61074-4}}&lt;br /&gt;
* [[Jo A. Lawless]] and [[Molly M. Miller]], &amp;#039;&amp;#039;[[Understanding CLOS: the Common Lisp Object System]]&amp;#039;&amp;#039;, 1991, Digital Press, {{ISBN|1-55558-064-5}}&lt;br /&gt;
* [[Andreas Paepcke]], &amp;#039;&amp;#039;[[Object-Oriented Programming: the CLOS Perspective]]&amp;#039;&amp;#039;, 1993, The MIT Press. {{ISBN|0-262-16136-2}}&lt;br /&gt;
* [http://www.dreamsongs.com/Files/ECOOP.pdf The Common Lisp Object System: An Overview] by [[Richard P. Gabriel]] and [[Linda DeMichiel]] provides a good introduction to the motivation for defining classes by means of generic functions.&lt;br /&gt;
* [http://cl-cookbook.sourceforge.net/clos-tutorial/ Fundamentals of CLOS] by [[Nick Levine]] 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.&lt;br /&gt;
* &amp;#039;&amp;#039;[[Common Lisp HyperSpec]]&amp;#039;&amp;#039;, [http://www.lispworks.com/documentation/HyperSpec/Body/07_.htm Chapter 7: &amp;#039;&amp;#039;Objects&amp;#039;&amp;#039;]&lt;br /&gt;
&lt;br /&gt;
{{Common Lisp}}&lt;br /&gt;
{{Lisp programming language}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Common Lisp]]&lt;br /&gt;
[[Category:Object-oriented programming]]&lt;br /&gt;
[[Category:Lisp (programming language)]]&lt;/div&gt;</summary>
		<author><name>185.7.93.150</name></author>
	</entry>
</feed>