[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Chicken-users] Strange problems with args egg
From: |
Jim Ursetto |
Subject: |
Re: [Chicken-users] Strange problems with args egg |
Date: |
Sun, 4 Aug 2013 08:43:14 -0500 |
Did you try my patch? You don't have to rewrite anything, it's a bug in the
args egg.
On Aug 4, 2013, at 2:13 AM, Jonathan Chan <address@hidden> wrote:
> 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
> address@hidden
>
>
> _______________________________________________
> Chicken-users mailing list
> address@hidden
> https://lists.nongnu.org/mailman/listinfo/chicken-users