Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

As 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.


Most 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.


It'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 :)


It'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




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: