chicken-users
[Top][All Lists]
Advanced

[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: Tue, 6 Aug 2013 09:22:10 -0500

No problem. The fix is now in args 1.4.4.

On Aug 5, 2013, at 21:54, Jonathan Chan <address@hidden> wrote:

> Sorry for the delayed reply - I missed your message for some reason. The
> patch does work! Thanks for the help and for the useful egg.
> 
> -- 
> Jonathan Chan
> 
> On Sun, Aug 4, 2013, at 06:43 AM, Jim Ursetto wrote:
>> 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
>> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]