59 lines
5 KiB
HTML
59 lines
5 KiB
HTML
|
<!DOCTYPE html>
|
||
|
<html>
|
||
|
<head>
|
||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||
|
<title>CLiki: Issue INCOMPLETE-CLASS</title>
|
||
|
<link rel="alternate" type="application/atom+xml" title="ATOM feed of edits to current article"
|
||
|
href="https://www.cliki.net/site/feed/article.atom?title=Issue%20INCOMPLETE-CLASS">
|
||
|
<link rel="stylesheet" href="static/css/style.css">
|
||
|
<link rel="stylesheet" href="static/css/colorize.css">
|
||
|
</head>
|
||
|
|
||
|
<body>
|
||
|
<span class="hidden">CLiki - Issue INCOMPLETE-CLASS</span>
|
||
|
<div id="content"><div id="content-area"><div id="article-title">Issue INCOMPLETE-CLASS</div><div id="article"><a href="Issue.html" class="category">Issue</a>: INCOMPLETE-CLASS<p>References: <a href="https://www.cliki.net/site/HyperSpec/Body/mac_defclass.html" class="hyperspec">DEFCLASS</a>, <a href="http://www.cliki.net/site/HyperSpec/Body/sec_4-3-1.html">4.3.1</a><p><dl><p><dt>Problem Description:</dt><p><dd>
|
||
|
<a href="https://www.cliki.net/site/HyperSpec/Body/mac_defclass.html" class="hyperspec">DEFCLASS</a> states that for standard classes, "It is not required that the superclasses of a class be defined before the defclass form for that class is evaluated." Let's call such a class with a not-yet-defined superclass an "incomplete class". One can now argue whether an incomplete class is a class or not, i.e. if <a href="https://www.cliki.net/site/HyperSpec/Body/acc_find-class.html" class="hyperspec">FIND-CLASS</a> is required to return it, given its name.<p><ul>
|
||
|
<li>Since <a href="https://www.cliki.net/site/HyperSpec/Body/mac_defclass.html" class="hyperspec">DEFCLASS</a> says "defclass defines a new named class", an incomplete class should be considered as a class.</li>
|
||
|
<li>CLHS 4.3.1 says that a class determines the structure of a set of objects. This is not true for incomplete classes, as they cannot be instantiated.</li>
|
||
|
<li>CLHS 4.3.1 says that each class has a class precedence list. Incomplete classes don't, since the complete list of superclasses is unknown.</li>
|
||
|
<li>CLHS 4.3.1 says that the class t is a superclass of every class except itself. So there should be a chain of direct-superclass relations from an incomplete class to t. But for incomplete classes for which all direct superclasses don't exist yet there is no such chain.</li>
|
||
|
</ul>
|
||
|
</dd>
|
||
|
</dl><p>You'll want to look into the <a href="MOP.html" class="internal">MOP</a>'s <a href="https://clos-mop.hexstreamsoft.com/classes/#forward-referenced-class">FORWARD-REFERENCED-CLASS</a>. Notably, <a href="https://clos-mop.hexstreamsoft.com/concepts/#inheritance-structure-of-metaobject-classes">Section 5.3 Inheritance structure of metaobject classes</a> and <a href="https://clos-mop.hexstreamsoft.com/concepts/#class-finalization-protocol">Section 5.5.2 Class finalization protocol</a> of <a href="AMOP.html" class="internal">AMOP</a> talk about it a bit.</div></div>
|
||
|
<div id="footer" class="buttonbar"><ul><li><a href="Issue INCOMPLETE-CLASS.html">Current version</a></li>
|
||
|
<li><a href="https://www.cliki.net/site/history?article=Issue%20INCOMPLETE-CLASS">History</a></li>
|
||
|
<li><a href="https://www.cliki.net/site/backlinks?article=Issue%20INCOMPLETE-CLASS">Backlinks</a></li><li><a href="https://www.cliki.net/site/edit-article?title=Issue%20INCOMPLETE-CLASS&from-revision=3722813032">Edit</a></li><li><a href="https://www.cliki.net/site/edit-article?create=t">Create</a></li></ul></div>
|
||
|
</div>
|
||
|
<div id="header-buttons" class="buttonbar">
|
||
|
<ul>
|
||
|
<li><a href="https://www.cliki.net/">Home</a></li>
|
||
|
<li><a href="https://www.cliki.net/site/recent-changes">Recent Changes</a></li>
|
||
|
<li><a href="CLiki.html">About</a></li>
|
||
|
<li><a href="Text Formatting.html">Text Formatting</a></li>
|
||
|
<li><a href="https://www.cliki.net/site/tools">Tools</a></li>
|
||
|
</ul>
|
||
|
<div id="search">
|
||
|
<form action="https://www.cliki.net/site/search">
|
||
|
<label for="search_query" class="hidden">Search CLiki</label>
|
||
|
<input type="text" name="query" id="search_query" value="" />
|
||
|
<input type="submit" value="search" />
|
||
|
</form>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div id="pageheader">
|
||
|
<div id="header">
|
||
|
<span id="logo">CLiki</span>
|
||
|
<span id="slogan">the common lisp wiki</span>
|
||
|
<div id="login"><form method="post" action="https://www.cliki.net/site/login">
|
||
|
<label for="login_name" class="hidden">Account name</label>
|
||
|
<input type="text" name="name" id="login_name" class="login_input" />
|
||
|
<label for= "login_password" class="hidden">Password</label>
|
||
|
<input type="password" name="password" id="login_password" class="login_input" />
|
||
|
<input type="submit" name="login" value="login" id="login_submit" /><br />
|
||
|
<div id="register"><a href="https://www.cliki.net/site/register">register</a></div>
|
||
|
<input type="submit" name="reset-pw" value="reset password" id="reset_pw" />
|
||
|
</form>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</body></html>
|