[gambit-list] Gambit-C macros
Mikael
mikael.rcv at gmail.com
Sun Aug 26 18:49:34 EDT 2012
First note there is more than one code/macro expander for Gambit: Gambit's
default, the one with Black Hole, and the syntax-case library file, for
instance.
2012/8/26 Bob McIsaac <bobmc_net at rogers.com>
> Hi:
>
> 3 questions...
>
> I'm looking for a "when" macro and tried one patterned on "unless". It
> behaves like "when-not". How do I write a proper "when" macro?
>
> (define-syntax when-not
> (syntax-rules ()
> ((when-not test body ...)
> (if test #t (begin body ...)))))
>
> (define (test-when n)
> (when-not (not (< n 50))
> (println "line1 " n)
> (println "line2 " n)
> (println "line3 " n)))
> (test-when 0) (test-when 3) (test-when 55)
> ;-------------------------------------------
>
I'm not clear about what you are trying to achieve here.
> Re "define-syntax" the Gambit-C manual says .."Note that this
> implementation of syntax-case does not support special forms that are
> specific to Gambit." What are the implications of this statement? Is there
> a preferred model for writing Gambit-C macros?
>
No support for #!rest #!optional #!key would be a good start. Not clear atm
about more.
> ;------------------------------------------------------------
>
> Some code has a "##" prefix like..
> (##define-macro (err form)
> `(let ()
> (##declare (safe) (generic))
> (err-form (lambda () ,form))))
>
> Why is that?
>
Generally in Gambit ##-prefixes on Gambit-provided procedures is to say
it's the non-typechecked variant.
As for Gambit-provided syntactical forms (##define-macro ##lambda etc.) I
believe they're equivalent with the non-prefixed variant.
Brgds
> =bob=
>
>
> _______________________________________________
> Gambit-list mailing list
> Gambit-list at iro.umontreal.ca
> https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20120826/04883cfa/attachment.htm>
More information about the Gambit-list
mailing list