Quels sont les langages qui proposent des macros hygiéniques ?
Les macros hygiéniques sont des macros dont l'expansion est garantie de ne pas provoquer la capture accidentelle d'identifiants. Elles sont une caractéristique de langages de programmation tels que Scheme, Dylan, Rust, Nim et Julia. Le problème général de la capture accidentelle était bien connu de la communauté Lisp avant l'introduction des macros hygiéniques. Les auteurs de macros utilisaient des fonctionnalités du langage qui généraient des identifiants uniques (par exemple, gensym) ou utilisaient des identifiants obscurcis afin d'éviter le problème. Les macros hygiéniques sont une solution programmatique au problème de la capture qui est intégrée dans l'extenseur de macros lui-même. Le terme "hygiène" a été inventé dans l'article de Kohlbecker et al. de 1986 qui présentait l'expansion hygiénique des macros, inspirée de la terminologie utilisée en mathématiques.
Parmi les langages qui proposent des macros hygiéniques, on peut citer Scheme, Dylan, Rust, Nim et Julia.
What are some languages that feature hygienic macros?
Hygienic macros are macros whose expansion is guaranteed not to cause the accidental capture of identifiers. They are a feature of programming languages such as Scheme,[1] Dylan,[2] Rust, Nim, and Julia. The general problem of accidental capture was well known within the Lisp community prior to the introduction of hygienic macros. Macro writers would use language features that would generate unique identifiers (e.g., gensym) or use obfuscated identifiers in order to avoid the problem. Hygienic macros are a programmatic solution to the capture problem that is integrated into the macro expander itself. The term "hygiene" was coined in Kohlbecker et al.'s 1986 paper that introduced hygienic macro expansion, inspired by the terminology used in mathematics.[3]
Some languages that feature hygienic macros include Scheme, Dylan, Rust, Nim, and Julia.