[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Chicken-users] unbound variable: or
From: |
Michele La Monaca |
Subject: |
Re: [Chicken-users] unbound variable: or |
Date: |
Sat, 30 May 2015 16:37:38 +0200 |
On Sat, May 30, 2015 at 4:02 PM, Peter Bex <address@hidden> wrote:
> On Sat, May 30, 2015 at 03:42:41PM +0200, Michele La Monaca wrote:
>> On Sat, May 30, 2015 at 4:23 AM, John Cowan <address@hidden> wrote:
>> > Jinsong Liang scripsit:
>> >
>> >> I want to learn some basic macro programming in Chicken. However, it seems
>> >> there are multiple macro definition APIs in Chicken: define-syntax,
>> >> syntax-rules, syntax-case, define-macro. Which one should I start with?
>> >
>> > Define-macro is completely obsolete and not supported in Chicken 4 or
>> > any modern Scheme.
>>
>> Gambit has it. Too bad Chicken 4 dropped it.
>>
>> I don’t think describing define-macro "obsolete” is 100% correct.
>
> As has been pointed out time and again, it is fundamentally broken.
Ok, I trust you then.
> Looks like you are mixing up two things: on one hand, define-macro
> offers the syntactic convenience of not having to pick apart the input
> form. On the other hand, define-macro does not support hygienic
> renaming at all (except for gensym, which only works on identifiers
> created by the macro itself).
I have no use of renaming in my example so I am mixing up nothing.
BTW, I am not interested in "protecting" eval and cons if you were
asking.
> If it's the syntactic convenience you're after, take a look at the
> "bindings" egg by Juergen Lorenz.
So you first mess with the define-macro syntax then redirect me to an
egg to fix it up again. No thanks.
> It offers various improvements
> on the basic er-macro-transformer and ir-macro-transformer syntax.
>>
>> (let ((x 9)) (apply-any or '(#f (+ x 1) (print "hello"))))
>>
>> Error: unbound variable: x
>>
>> Oops.
>
> Eval does not have access to the lexical scope where it is
> invoked.
Exactly. But it looks like you missed the point. Hint: reconsider the
"where" word.
Regards,
Michele
- Re: [Chicken-users] unbound variable: or, (continued)
- Re: [Chicken-users] unbound variable: or, Jinsong Liang, 2015/05/27
- Re: [Chicken-users] unbound variable: or, Michele La Monaca, 2015/05/28
- Re: [Chicken-users] unbound variable: or, Jinsong Liang, 2015/05/28
- Re: [Chicken-users] unbound variable: or, Michele La Monaca, 2015/05/29
- Re: [Chicken-users] unbound variable: or, Jinsong Liang, 2015/05/29
- Re: [Chicken-users] unbound variable: or, Matt Gushee, 2015/05/29
- Re: [Chicken-users] unbound variable: or, John Cowan, 2015/05/29
- Re: [Chicken-users] unbound variable: or, Peter Bex, 2015/05/30
- Re: [Chicken-users] unbound variable: or, Michele La Monaca, 2015/05/30
- Re: [Chicken-users] unbound variable: or, Peter Bex, 2015/05/30
- Re: [Chicken-users] unbound variable: or,
Michele La Monaca <=
- Re: [Chicken-users] unbound variable: or, chi, 2015/05/31
- Re: [Chicken-users] unbound variable: or, Peter Danenberg, 2015/05/31
- Re: [Chicken-users] unbound variable: or, Peter Bex, 2015/05/31
- Re: [Chicken-users] unbound variable: or, John Cowan, 2015/05/31
- Re: [Chicken-users] unbound variable: or, John Cowan, 2015/05/30
Re: [Chicken-users] unbound variable: or, Daniel Leslie, 2015/05/27