[racket] Eval / Lazy Macros followup

From: Eli Barzilay (eli at barzilay.org)
Date: Fri Jul 5 19:33:29 EDT 2013

On Monday, Sean Kanaley wrote:
> Please disregard the first option as it would be semantically incorrect...
> One could then not use mappend as a higher order function properly as 
> the arguments would've been evaluated already in, say, the list if 
> mappend is folded in.
> So I'll have to use lazy, but how does one write macros with it?

I'm not sure that I followed things correctly, but the problem with
`mappend' is that it's yet another piece of fuunctionality that needs
to be defined in the lazy language to ensure that it's not too
strict.  If you're just requiring it from `racket/list' then the lazy
languauge treats it as something that expects strict inputs (which is
obviously wrong).  To fix it, you just need to do this definition, and
there shouldn't be any need for macros when you do that.

(BTW, the reason that it's not already in the lazy langugae is that
it's a function that was added well after the lazy language was made.)

          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                    http://barzilay.org/                   Maze is Life!

Posted on the users mailing list.