News for hackers. Stuff that matters.
Re:Why Lisp? by vog on Thursday May 07, 2015 @05:29PM (#9508431)
Or, once you have lazy evaluation (like in Haskell), for that matter.
Re:Why Lisp? by jlarocco on Thursday May 07, 2015 @05:43PM (#9508512)
Laziness can achieve a similar thing in that case (less elegantly, IMO), but there are other uses for macros that can't be solved with laziness.
Re:Why Lisp? by mbrock on Thursday May 07, 2015 @06:08PM (#9508682)
Look at the uses for Template Haskell, for example.

That's basically Haskell's macro system. And it's used quite a lot, though it's kind of arcane.

If you want to create an abstraction that defines one or several data types, you'll think hard about whether you can use some kind of type-level programming instead—but if that's not possible, or not convenient, you can use TH macros.

For example, the `lens` package defines TH macros for creating special kinds of accessors that are tedious to write by hand.

Re:Why Lisp? by platz on Friday May 08, 2015 @01:30AM (#9510110)
using macros to deal with boilerplate, although useful, though is of a different order than things that simply cannot be expressed without macros
Re:Why Lisp? by wtetzner on Friday May 08, 2015 @04:24AM (#9510532)
Which things cannot be expressed without macros? Macros run at compile time, and just output normal code in the language.

I think being able to generate types is a very useful and important use of macros. In fact, (depending on whether or not your macros can have side effects) you could use macros to implement something like F#'s type providers.

Re:Why Lisp? by kazinator on Thursday May 07, 2015 @06:28PM (#9508795)
Search down for my comment which contains the substring:

"if I have a non-strictly evaluated language with higher order functions, do I still need macros?"