[racket] Writing a toy interpreter. Need help solving this bootstrapping problem.

From: Patrick Li (patrickli.2001 at gmail.com)
Date: Thu Feb 17 09:55:16 EST 2011

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.2001 at 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 <hendrik at 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
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20110217/50e2dd20/attachment.html>

Posted on the users mailing list.