[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] Bug report: low-level macros vs. variables in csi

From: Jim Ursetto
Subject: Re: [Chicken-users] Bug report: low-level macros vs. variables in csi
Date: Sat, 15 Mar 2008 17:53:38 -0600


If this behavior is causing you problems, and you can't work around it, I
believe you could use the codewalk egg with your own (nonhygienic)
macroexpander to keep track of the latest binding for an identifier and
select the correct one, even taking into account lexical shadowing (which
you did not mention).  Check the modules egg for an example, and also the
branches/define-macro branch for a version that deals with macros.

That's a lot of effort, though, when there exist more powerful,
preexisting expanders.

Using an un-Schemely, non-standard (but eminently practical)
expander, I wouldn't expect anything more than un-Schemely,
non-standard behavior.

For what it's worth, the following already does the "right thing"
in the interpreter.

$ csi
#;1> (let ((cond 43)) (cond (#t cond)))
Error: call of non-procedure: #t

On 3/15/08, John Cowan <address@hidden> wrote:
> Are you saying (or rather implying) that it's too expensive to insert a
> check for low-level macro names in funky places into eval? It certainly
> sounds straightforward to me.

> In effect, native Chicken without an expander is partly a Lisp-2.

reply via email to

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