On 08/22/13 10:54:44, John Cowan wrote:
> Like your earlier macro that attempts to remap h to |h|, this one
> won't
> quite work, because the difference between h and |h| disappears in 
> the
> reader, and the macro engine never sees it.  192.168.0.1 is simply 
> not
> valid Scheme lexical syntax, and nothing you can do at the macro 
> level
> will make it so: it so happens that Chicken processes it as a symbol,
> but that's an artifact of the implementation.
> 
[snip]

Michele-

To restate John's point in a way which may help you to understand it:

There is a significant difference between the meaning of the term 
"macro" in the Lisp world and in most of the rest of computer-land:

In most computer contexts (in particular, in C/C++, which is where most 
folks seem to first encounter the concept these days), macros are 
pretty much text-processing devices; sometimes there's a _little_ 
tokenizing involved, but mostly, they replace one chunk of text with 
another.

In Lisp-like languages, including Scheme, they're structure-level 
devices; they replace a chunk of the parse tree (the code *after* it's 
been tokenized and parsed, but before it's been executed) with another 
tree.

The difference can lead to all kinds of confusion until you understand 
it; I think that's where you're going astray.

-John

--
John Maxwell  KB3VLL  j...@jmaxhome.com

Nihilism is best done by professionals.
    -Iggy Pop

_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to