Thanks for the link Tony! That seems to tackle exactly what I'm having trouble with. -Patrick
On Thu, Feb 17, 2011 at 9:11 AM, Patrick Li <patrickli.2...@gmail.com>wrote: > Thanks for the help. I shall read through AMOP in more detail and see if I > can get some hints from that. > -Patrick > > > On Wed, Feb 16, 2011 at 11:25 PM, Hendrik Boom <hend...@topoi.pooq.com>wrote: > >> On Wed, Feb 16, 2011 at 11:07:49PM -0500, Patrick Li wrote: >> > Hello everyone, >> > >> > I'm writing a toy Scheme-ish interpreter for fun, and am trying to add >> some >> > Smalltalk flavor to my Scheme system. I'm running into a bootstrapping >> > problem though, and would like to ask someone for a nudge in the right >> > direction. >> > >> > (1) I want symbols to be represented as Functions. >> > ie. I want to be able to do this: >> > ('my-symbol 'length) returns 9 >> > ('my-symbol 'equals 'my-symbol2) returns false >> > >> > (2) I want symbols to be created by calling the function SYMBOL: >> > (SYMBOL 'new <internal-symbol-representation>) returns a new function >> > representing a symbol >> > >> > (3) I want users to be able to override the built-in SYMBOL function. >> > (define SYMBOL (lambda args .... new symbol definition ....)) >> > >> > I can't seem to write a system like this without falling into an >> infinite >> > loop somewhere. >> > >> > For example this is the last one that I ran into: >> > >> > i. (quote asdf) is a special form that should create a symbol by calling >> > (SYMBOL 'new <internal-object-which-represents-asdf>) >> > >> > ii. But doing that requires creating the 'new symbol >> > >> > iii. Creating the 'new symbol requires calling >> > (SYMBOL 'new <internal-object-which-represents-new>) >> > >> > iv. But doing that requires creating the 'new symbol >> > >> > and so on. >> > >> > >> > I apologize if this seems unclear. Please ask me for clarifications if I >> > didn't explain myself properly. I have been stuck on this sort of >> problem >> > for a while now, and can't wrap my head around it. >> > -Patrick >> >> When you find you need to have implemented something in order to >> implement itself within your sustem, it's a strong clue that it has to >> be built into the system, rather than built on top of it.. In this >> case, the symbol 'new, will have to be in the system to stat with, i.e., >> written in whatever othe system you bootstrap from. >> >> -- hendrik >> _________________________________________________ >> For list-related administrative tasks: >> http://lists.racket-lang.org/listinfo/users >> > >
_________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users