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