Re:Why Lisp?
by ufo on Thursday May 07, 2015 @08:24PM
(#9509315)
You pass a lambda that returns the debug message. With javascripty syntax:
BTW, if your language is lazily evaluated (like Haskell) then you don't need to do this because arguments will only ve evaluated when they are needed.
[ Parent
| on HN ]
The downside there is you can still end up allocating a closure. Whereas an expanded macro shouldn't cost anything. (A sufficiently smart compiler might be able to optimize the closure allocation.)
Re:Why Lisp?
by FeepingCreature on Friday May 08, 2015 @03:27AM
(#9510403)
A sufficiently modern language (like, saaaaay, D2) could also give you a type like "closure you don't intend to escape" (let's call this a "scoped closure", or if you will, "scope string delegate()"), and eschew allocation entirely without requiring optimization.