Jonathan Chan scripsit:

> Here is the smallest amount of args-using Chicken that will cause the
> problem:
> 
> (define-syntax test
>   (syntax-rules ()
>     ((test)
>      (begin
>        (define opts (list (args:make-option (h help) #:none "display
>        this text" (print "foo"))))
>        (write (args:parse (command-line-arguments) opts))))))
> 

[...]

> The strange thing is that h and help seem to have turned into ("h390"
> "help391"), causing problems.

This is not a Chicken-specific problem, but a general problem
with non-hygienic macros.  You are using the non-hygienic macro
"args:make-option" within a hygienic macro.  The syntax-rules transformer
doesn't know that "h" and "help" are being used literally here (because
it cannot tell what args:make-option does), so it systematically renames
them to avoid collisions.

> Is there something I need to change to fix the problem? Sorry for many
> misunderstandings.

You can rewrite test as a non-hygienic (explicit renaming or implicit
renaming) macro.

-- 
If I read "upcoming" in [the newspaper]              John Cowan
once more, I will be downcoming                      http://www.ccil.org/~cowan
and somebody will be outgoing.                       co...@ccil.org

_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to