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