Related to the library porting issue, it's interesting to compare Lisp macros with Template Haskell. Lisp macros can be explained in a sentence: "they output a sexpr which is spliced into your code and then executed", whereas TH introduces a complex API for describing the structure of Haskell code. Macros in TH are more complex than their Lisp equivalents, but can be typechecked; they can only be run at compile-time, but provide stronger guarantees. Lispers get simplicity and power, and Haskellers get static checks and guarantees: everybody feels like they've got the better half of the bargain :-)
no subject