4 ms·
Haskell can do almost everything people generally use macros for without them. But there's always some things only macros can do, so for that you have template
by smoofra 17y ago
Haskell can do almost everything people generally use macros for without them. But there's always some things only macros can do, so for that you have template haskell.
- prodigal_erik 17y agoAs I understand it, if Haskell didn't already have syntax for let vars in expr you wouldn't be able to use Template Haskell to create it from scratch. Any domain-specific languages you make have to mimic existing Haskell syntax.
- mahmud 17y agoMost people think macros are for "compacting" code, or factoring out common parts. Macros are for introducing new control primitives, syntax and evaluation models into the language.
- gruseom 17y agoIt's both, no? You can always write macroexpanded code by hand, only with much repetition, so in that sense macros are always compacting. Except, I suppose, for perverse macros which expand into shorter code :)
- mahmud 17y agoIt's for both, but utility functions also serve the same purpose (which is why you see people claiming they could do whatever Lisp macros do with function/methods/classes/monads/templates/makefiles, etc.) :-P