I see, that does work to define "if".  (Racket, under #lang r6rs, only
allows one "library" form, so I can't run all of the above directly without
maybe creating separate files and figuring out how to load them... --which
I just did.)  Ok, your example works.

Is there a portable way within R6RS to effectively or actually turn off the
explicit phasing when it exists?  Imagine I want to do this for a large
tree of macros.  Is there a better approach than, say, creating a new
library for each new macro?
--John Boyle
*Science is what we understand well enough to explain to a computer. Art is
everything else we do.* --Knuth



On Thu, Oct 11, 2012 at 8:55 PM, Aaron W. Hsu <[email protected]> wrote:

> On Thu, 11 Oct 2012 22:21:05 -0400, John Boyle
> <[email protected]> wrote:
>
> > Aaron, I can't get your example to run.
>
> Sorry, that was a quick one-off and not intended to be runnable (the
> export list is completely
> invalid for one). Here's an example that you can actually cut and paste as
> a series of libraries.
>
> (library (extended-if)
>    (export if)
>    (import (rename (rnrs) (if %if)))
>    (define-syntax if
>      (syntax-rules ()
>        [(_)           (%if #f #t)]
>        [(_ t c r ...) (%if t c (if r ...))])))
>
> (library (example)
>    (export result)
>    (import (except (rnrs) if) (for (extended-if) run expand))
>    (define-syntax test
>      (lambda (x)
>        (let ([x (cadr (syntax->datum x))])
>          (if x 42 (not x) 24))))
>    (define result (list (test #t) (test #f))))
>
> Notice that you only need the explicit FOR when you are dealing with
> explicit phasing systems like Racket. On systems like Chez or
> Vicare/Ikarus, you should be able to just specify the (extended-if)
> library and have things work.
>
>
> --
> Aaron W. Hsu | [email protected] | http://www.sacrideo.us
> Programming is just another word for the Lost Art of Thinking.
>
> _______________________________________________
> Scheme-reports mailing list
> [email protected]
> http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports
>
_______________________________________________
Scheme-reports mailing list
[email protected]
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports

Reply via email to