Thanks for all the replies. This is very helpful to have a google-able term to get started. I will read up on how other people have handled these problems. I would think that Smalltalk would run into similar issues.<div><br>
</div><div>Racket is nice to get started with, but eventually I will need to move this onto a different system, so I cannot rely upon Racket&#39;s utilities. Even though they are very nice!</div><div><div><br></div><div>Thanks!<br>
<div>  -Patrick<br><br><div class="gmail_quote">On Sun, Oct 16, 2011 at 7:37 PM, Neil Van Dyke <span dir="ltr">&lt;<a href="mailto:neil@neilvandyke.org">neil@neilvandyke.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Patrick Li wrote at 10/16/2011 09:15 PM:<div class="im"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Does anyone have some tips for wrapping their heads around recursive things like this?<br>
e.g. writing multi-methods using normal functions, and then somehow turning everything into multi-methods?<br>
</blockquote>
<br></div>
I think that might be a simple module (or Racket #lang) problem: your module imports the ``primitive&#39;&#39; &quot;car&quot; and &quot;cdr&quot;, and exports the multimethod replacements for the primitives, using the same names as the primitives.<div class="im">
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
   OR writing an object system, where your classes are also objects, etc...<br>
</blockquote>
<br></div>
When I was using Smalltalk or Self, I believe this was sometimes called ``infinite meta-regress.&#39;&#39;  I would use that term as a Google starting point.  I&#39;d also read up on all the Gregor Kiczales et al. writings on CLOS, including the *Art of the Metaobject Protocol* book.<br>

<br>
I&#39;d also take another look at Eli Barzilay&#39;s Swindle package for Racket, which, IIRC, included a CLOS-like object system including multimethods.  Although, you have the advantage of modern Racket, which Eli didn&#39;t have a bazillion years ago when Swindle was first written, so there might be some new fun opportunities.<br>
<font color="#888888">
<br>
-- <br>
<a href="http://www.neilvandyke.org/" target="_blank">http://www.neilvandyke.org/</a><br>
</font></blockquote></div><br></div></div></div>