I don't see how a lazy language would let me implement my own version of `let`. Care to enlighten me?
- Sam Caldwell On Fri, Apr 8, 2016 at 7:10 AM, Norman Gray <[email protected]> wrote: > > Greetings. > > Quoting Asumu quoting Matthias: > > I'd like to propose that there are three disciplined uses of macros: >>> >>> 1. data sublanguages: I can write simple looking expressions and >>> [...] >>> >>> 2. binding constructs: I can introduce new binding constructs with >>> [...] >>> >>> 3. evaluation reordering: I can introduce constructs that delay/postpone >>> [...] >>> [Note: In Haskell, you don't need that one.] >>> >> > This is a seriously naive question, because I have only trivial experience > with Haskell (and by extension other lazy languages), but aren't each of > these things that you can do with a lazy language? > > If I can control when an expression is evaluated, then I can obviously do > (3), but supposing I can also control the environment within which it's > evaluated, can't I also do (2) and thence, with suitable juggling, go on to > (1)? Asumu's further example of 'use of macros that expand into submodules > in order to provide metadata for other programs/tools' sounds at least > complicated to do lazily, without macros, but not fundamentally impossible. > > Macros are obviously not the same as lazy evaluation (though from the > point of view of the macro expander, perhaps all the post-compilation > stages are 'lazy'), but I'm having a hard time seeing why it's obvious > they're not isomorphic. > > I imagine there may be both pragmatic and fundamental semantic reasons why > the two are different. > > All the best, > > Norman > > > -- > Norman Gray : https://nxg.me.uk > SUPA School of Physics and Astronomy, University of Glasgow, UK > > > -- > You received this message because you are subscribed to the Google Groups > "Racket Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.

