On 18/10/2007, Andreas Rossberg <rossberg@mpi-sws.mpg.de> wrote:

I guess you mean this one:

  http://web.cecs.pdx.edu/~sheard/papers/ExplicitLazy.ps

The primitive you're alluding to is called "mimic" in it.

Exactly! Thanks! I owe my (future) success to you :)

On 18/10/2007, skaller <skaller@users.sourceforge.net> wrote:

No, but Felix does it by default

What do you mean? You mean that if I write a map

   map f [] = []
   map f x:xs = f x : map f xs

I can apply it both to infinite and lazy lists?

   nums n = n : nums (n + 1)

   map (+1) (nums 4)

   map (print_int) [1; 5; 6]

On 18/10/2007, Jon Harrop <jon@ffconsultancy.com> wrote:

Scala can do something similar by controlling evaluation simply by altering
the signature. However, I've reviewed Haskell recently and I think complete
laziness is more of a hindrance than a benefit. The only think I'd like to
see added to eager FPLs is the ability to pattern match over lazy values,
forcing them only when necessary.

I never said anything about complete laziness. Actually, I positively agree with you, and I was searching for this paper as I don't want complete laziness. However, I consider laziness very useful in particular situations! For example, see this comment: http://programming.reddit.com/info/2mxh4/comments/c2ngwb

 - Tom