[gambit-list] Interested in portable syntax-case & gambit

James Long longster at gmail.com
Fri Apr 25 02:54:12 EDT 2008


As a followup to the Module System project that Christian Jaeger and I  
have discussed, as described here (http://dynamo.iro.umontreal.ca/~gambit/wiki/index.php/Module_System 
), this message goes to the Gambit list.  However, the intention of  
this message is to ask Marc about Gambit's expansion mechanism.

The project still loosely exists, though it is very much in phase 1,  
where Christian and I are independently developing different protoypes.

After doing a lot of research, I became very interested in the  
portable syntax-case implementation that Gambit currently adopts.  It  
is quite powerful and should fulfill my needs.  My current goal then  
is to work on better integration of Gambit and syntax-case.  If I can  
fix most of the current problems (location information, etc.), and  
build a lightweight configuration language on top of it, that would go  
very far.

It's very hard to start digging through Gambit's expansion/compiling  
mechanism though.  Are there any wiki pages that would describe  
anything about Gambit's source code transforming mechanisms?  (side  
note: Is there a way to see all of the pages on the wiki?)  If not, I  
was wondering if Marc, or anyone else who has had experience with all  
of this, would be interested in working with me on this, at least just  
to help get it going.  Maybe Christian has had experience in this area?

Marc has stated his interested in this, as in the following email:
https://webmail.iro.umontreal.ca/pipermail/gambit-list/2005-December/000512.html

I'm curious about the "few bits and pieces" mentioned in that email.

I started by looking at the portable syntax-case's SC-EXPAND  
procedure, and looking at how it was hooked in to gambit.  What I  
found was the ##EXPAND-SOURCE procedure, but I was quickly stuck at  
what to do with it.

 > (set! ##expand-source (lambda (x) (pp x) x))
 > (define foo 5)
#(#(source1) (#(#(source1) define (console) 65537) #(#(source1) foo  
(console) 524289) #(#(source1) 5 (console) 786433)) (console) 1)

I've started digging through Gambit's internals to figure out what  
type of record this is, but it's going very slowly.

Thanks,
- James



More information about the Gambit-list mailing list