Thank you for the help! This is definitely a very interesting language
to learn.
On 08/03/2013 09:06 AM, John Cowan wrote:
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.
--
Jonathan Chan
[email protected]
_______________________________________________
Chicken-users mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/chicken-users