html updates
authorclinton <clinton@unknownlamer.org>
Fri, 30 Jan 2009 09:07:38 +0000 (09:07 +0000)
committerClinton Ebadi <clinton@unknownlamer.org>
Mon, 2 Dec 2019 01:22:58 +0000 (20:22 -0500)
Metaobject Protocols.html
Sourdough Rye.html
index.html

index 24ca916..ef27539 100644 (file)
 </dl>
 </dd>
 <dt>
-<a href="#sec25">Procedural Only Where Neccesary</a>
+<a href="#sec25">Procedural Only Where Necessary</a>
 </dt>
 <dt>
 <a href="#sec26">Real World</a>
 </dl>
 </dd>
 <dt>
-<a href="#sec30">Sources &amp;amp; Further Reading</a>
+<a href="#sec30">Sources and Further Reading</a>
 </dt>
 <dd>
 <dl>
 </dt>
 </dl>
 </dd>
+<dt>
+<a href="#sec39">Software</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec40">Closer to MOP</a>
+</dt>
+</dl>
+</dd>
 </dl>
 </dd>
 </dl>
@@ -240,7 +250,7 @@ are meant only to be used by the protocol defined around the class.</p>
   ((bar <span class="emacs-face-builtin">:accessor</span> bar-of <span class="emacs-face-builtin">:initform</span> (list 1 2 3))))
 </pre>
 
-<p>Slot defintions have several options; the above example shows only the
+<p>Slot definitions have several options; the above example shows only the
 <code>:accessor</code> and <code>:initform</code> options which are the most commonly
 used. <code>:accessor</code> generates an accessor for the slot (e.g. if you have
 an instance of <code>example</code> you can <code>(setf (foo-of some-example-instance)
@@ -325,7 +335,7 @@ Design Patterns</h3>
 programs. Many of them are merely methods to get around deficiencies
 in the language, and can be quite messy to implement in some
 languages. Ideally a pattern would be subsumed by the language, but
-real world contraints require language standards to remain fairly
+real world constraints require language standards to remain fairly
 static.</p>
 
 
@@ -444,7 +454,7 @@ Intercessory</h4>
 implementing methods which override certain aspects of the language
 behavior. This class of MOPs are what make MOPs especially
 powerful. No longer must a problem be restructured to fit the
-implementation language; the underyling language can be reshaped to
+implementation language; the underlying language can be reshaped to
 fit the task at hand, and obfuscation of the intended structure of the
 application can be avoided.</p>
 
@@ -459,17 +469,17 @@ any existing class observable.</p>
 
 <p>In a language lacking a MOP, implementing the observer pattern
 requires modifying every accessor of a class to explicitly invoke any
-observers, and neccesitates the addition of a mixin class to the class
-heirarchy. The fact that an object can be observed is a meta property
+observers, and necessitates the addition of a mixin class to the class
+hierarchy. The fact that an object can be observed is a meta property
 of the class, and forcing it to be implemented at the application
-level dirties the inheritance heirarchy and adds uneccesary meta
+level dirties the inheritance hierarchy and adds unnecessary meta
 details to the program.</p>
 
 <pre class="src">
 <span class="emacs-face-comment-delimiter">;;; </span><span class="emacs-face-comment">This metaclass adds a slot to instances which use it, and so the
 </span><span class="emacs-face-comment-delimiter">;;; </span><span class="emacs-face-comment">system is defined in its own package to avoid name conflicts
 </span>(<span class="emacs-face-keyword">defpackage</span> <span class="emacs-face-type">:observer</span>
-  (<span class="emacs-face-builtin">:use</span> <span class="emacs-face-builtin">:cl</span> #+sbcl <span class="emacs-face-builtin">:sb-mop</span>)
+  (<span class="emacs-face-builtin">:use</span> <span class="emacs-face-builtin">:cl</span> <span class="emacs-face-builtin">:c2mop</span>)
   (<span class="emacs-face-builtin">:export</span> observable register-observer unregister-observer))
 
 (<span class="emacs-face-keyword">in-package</span> <span class="emacs-face-builtin">:observer</span>)
@@ -650,12 +660,12 @@ checks or copying.</p>
 
 
 <h3><a name="sec25" id="sec25"></a>
-Procedural Only Where Neccesary</h3>
+Procedural Only Where Necessary</h3>
 
-<p class="first">Some operations like method invocation are inheretly stateful and so
+<p class="first">Some operations like method invocation are inherently stateful and so
 must use a procedural protocol. There is no benefit to be gained from
 using a functional protocol, and indeed an attempt would result in
-obtuse code that severely restricted the implementian. Do note that
+obtuse code that severely restricted the implementation. Do note that
 only a very small part of method invocation is stateful (the actual
 call), and most of it can be implemented functionally (e.g. computing
 the discriminating function).</p>
@@ -667,7 +677,7 @@ Real World</h3>
 <h4><a name="sec27" id="sec27"></a>
 <a href="http://common-lisp.net/project/ucw/">UCW</a> and <a href="http://common-lisp.net/project/bese/arnesi.html">Arnesi</a></h4>
 
-<p class="first">Arnesi uses the CLOS MOP to implement methods which are transparantly
+<p class="first">Arnesi uses the CLOS MOP to implement methods which are transparently
 rewritten into continuation passing style. This allows their execution
 to be suspended at certain points and resumed later. UCW builds on top
 of this to support a web framework where the statelessness of http is
@@ -688,7 +698,7 @@ implementing relational slots).</p>
 <h4><a name="sec29" id="sec29"></a>
 <a href="http://common-lisp.net/project/elephant/">Elephant</a></h4>
 
-<p class="first">Elephant uses the CLOS MOP to transparantly store any class to disk
+<p class="first">Elephant uses the CLOS MOP to transparently store any class to disk
 and handle paging between the disk store and memory efficiently
 without user intervention.</p>
 
@@ -696,7 +706,7 @@ without user intervention.</p>
 
 
 <h2><a name="sec30" id="sec30"></a>
-Sources &amp;amp; Further Reading</h2>
+Sources and Further Reading</h2>
 
 <h3><a name="sec31" id="sec31"></a>
 Sources</h3>
@@ -755,6 +765,18 @@ notes, and so the 331 pages might not actually take that long to read.</p>
 
 
 
+<h3><a name="sec39" id="sec39"></a>
+Software</h3>
+
+<h4><a name="sec40" id="sec40"></a>
+<a href="http://common-lisp.net/project/closer/closer-mop.html">Closer to MOP</a></h4>
+
+<p class="first">Compatibility layer that attempts to present the <em>Art of the Metaobject
+Protocol</em> MOP specification properly in as many Common Lisp
+implementation as possible.</p>
+
+
+
 
   <!-- Page published by Emacs Muse ends here -->
 
@@ -782,10 +804,12 @@ notes, and so the 331 pages might not actually take that long to read.</p>
     </a>
   </p>
 
-<p class="cke-footer">Leebert: You don't listen to music.
-Leebert: You listen to the audio equivalent of /dev/urandom
+<p class="cke-footer">                         Ruled by the ebb of my oceans                         
+                        Slaves to the dusk and the dawn                        
+                         Your petri dish civilisations                        
+                             Are buried and born                              
 </p>
 <p class="cke-timestamp">Last Modified:
-    September 26, 2008</p>
+    January 30, 2009</p>
   </body>
 </html>
\ No newline at end of file
index 2098b9f..03cf09a 100644 (file)
@@ -106,7 +106,7 @@ get bubbly again.</p>
 Dough</h3>
 
 <ol>
-<li>Mix sponge, molasses, salt, oil, and water throughly</li>
+<li>Mix sponge, molasses, salt, oil, and water thoroughly</li>
 <li>Gradually mix in 3 cups of flour (after about half of it has been
 mixed in you will have to knead the rest in by hand)</li>
 <li>Knead for a good ten or twenty minutes</li>
@@ -165,11 +165,9 @@ wish).</p>
     </a>
   </p>
 
-<p class="cke-footer">clinton: last time I was a bit weak (*sniff* level four and only 18 hp)
-clinton: I had a -1 intelligence modifier for the first three weeks
-emacsen: what about your character?
+<p class="cke-footer">Mike: I WAS NOT MICROWAVED.
 </p>
 <p class="cke-timestamp">Last Modified:
-    January 28, 2009</p>
+    January 30, 2009</p>
   </body>
 </html>
\ No newline at end of file
index b599366..83cc32c 100644 (file)
@@ -230,7 +230,11 @@ wrote and darcs.</p>
     </a>
   </p>
 
-<p class="cke-footer">Lindsay (Carlton): nighttime baker! sounds a little iffy
+<p class="cke-footer">Baron Hausmann: I hate like...
+Baron Hausmann: suburban punks
+Baron Hausmann: because they try to add things that should never be a part of punk
+Baron Hausmann: like caring
+Baron Hausmann: and cleanliness
 </p>
 <p class="cke-timestamp">Last Modified:
     January 26, 2009</p>