Talk:Hygienic macro

message: Macros transform arguments into call by reference? Weird. orthogonal 19:25, 20 Nov 2003 (UTC)
replies: text: No, macros transform code before it hits the compiler or interpreter. There's no references at all, at macro expansion time, all you have available as arguments are tokens. -BrianCully 14:54, 2 September 2006 (UTC)
thread_title:  Call by reference 

message: It's great that there's a C example here, but I've never heard anybody speak of hygienic macros in the context of C -- only in dialects of Lisp.  Could we get (1) a similar example of the hygiene problem in Common Lisp, (2) the same example in Scheme (which claims to have hygienic macros), and (3) how a Common Lisper would resolve the problem?  Thanks!
:That's fine, but a lot of us don't speak Lisp, so the examples as given are utterly impenetrable.  I appreciate the Lisp examples; I wonder if it's possible to "translate" some of them into similar C code?  --Doradus 00:24, 7 July 2009 (UTC)
thread_title:  Examples 

message: Brian, 
Yes, it is doing what you would expect, if you always knew when it was going to happen; consider if you were using a software package that included macros written by someone else; you wouldn't likely read the implementations of all of them (and whether you would or not, a user shouldn't have to).  And the source might not be available for whatever reason.  
Suppose one of these macros happened to use a symbol you were rebinding for another purpose in your code?  You'd be quite surprised and disappointed after finally figuring out what was going wrong.
One of the reasons why hygiene matters a lot in LISP and its kin is the heavy usage macros get in that language, mostly because they are very sophisticated and offer many useful features beyond what you see in the C family macros.
Elugelab 13:01, 24 April 2007 (UTC)
thread_title:  Why the hygiene problem is a problem 

message: This article seems rather biased towards Lisp macros, and is somewhat out of reach of the rest of us that don't know it (or Lisp, for that matter). There is a little about C-style macros, (relatively simple to implement assuming arbitrary memory), but little else.
Could Sweet.js macros be referenced in this? They are heavily influenced by Lisp macros, and are hygienic by default. Sweet.js macros aren't native JavaScript, but they are a single, completely independent extension to the language.
It also happens to enable literal syntactical extensions of the language itself, including support for infix macros.
Sweet.js macros have been used to poly-fill E4X support, poly-fill some ECMAScript Harmony syntax, and implement a browser-targeted JavaScript derivative created to work with React.js, JSX. impinball (talk) 02:41, 1 September 2014 (UTC)
thread_title:  Too Lisp-oriented? 

message: If I use "set!" instead of "let" to overwrite the "not" in the example, like this:
 (define-syntax my-unless
   (syntax-rules ()
     ((_ condition body ...)
      (if (not condition)
          (begin body ...)))))
  (set! not (lambda (x) x))
  (my-unless #t
    (display "This should not be printed!")
    (newline))
Guile still prints "This should not be printed". So it's still capturing definitions made after the macro definition.
Is that intended behaviour? Did I misunderstand something? --2A03:4000:15:2A3:1:0:0:1002 (talk) 12:09, 29 March 2017 (UTC)
thread_title:  Scheme not really hygienic? 

message: Hello fellow Wikipedians,
I have just modified one external link on Hygienic macro. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
*Added archive https://web.archive.org/web/20121113081854/http://nemerle.org/metaprogramming.pdf to http://nemerle.org/metaprogramming.pdf
When you have finished reviewing my changes, you may follow the instructions on the template below to fix any issues with the URLs.
Cheers.—InternetArchiveBot (Report bug) 07:25, 7 April 2017 (UTC)
thread_title:  External links modified 

message: Which concepts in this article are "too technical" for readers to understand? Jarble (talk) 22:19, 30 January 2024 (UTC)
replies: text: A second-year CS undergraduate would struggle to comprehend it. That's massively beyond what we expect of any article. This was a generous tag as an alternative to proposing it be deleted or merged as esoteric programming trivia. Chris Cunningham (user:thumperward) (talk) 23:12, 30 January 2024 (UTC)
thread_title:  Is this article "too technical?"