[Haskell-cafe] Lazy series [was : Preventing sharing]

Tom Ellis tom-lists-haskell-cafe-2013 at jaguarpaw.co.uk
Sat Jan 9 17:36:54 UTC 2016


On Sat, Jan 09, 2016 at 06:29:05PM +0100, Jerzy Karczmarczuk wrote:
> Tom Ellis wrote :
> >consider a lazy language, Haskell--,/which doesn't allow recursive bindings of non-function types./   In Haskell-- you
> >*cannot*  write
> >
> >     exps = 1 + integral exps
> >
> >but you have to write
> >
> >     exps = I.fix (\e -> 1 + integral e)
> >
> >So we see that the nice syntax "exps = 1 + integral exps" is not due to
> >laziness (since Haskell-- is lazy, but you cannot write that).
> If you say so...
> 
> You may always say:
> 
> "Consider the syntax XXXX.  Now, consider a lazy language which
> doesn't allow XXXX.
>  So, your nice syntax has nothing to do with laziness. QED".

Granted, but the more important point was the sketch of the strict language
which *does* allow it.  You have conveniently failed to challenge me on
any of the aspects of the very simple design.

> Tom, construct such a language, and I might believe you.

I remind you that Doug's original claim was "this won't work in a strict
language", which he offered without proof, even a sketch of a proof.  I
still hold the onus is on you (or him) to demonstrate it!

> Also, I recall your former objection, that

> *exps = 1 + integral exps*
> 
> should work "for lazy lists" in a strict language. Please, implement
> it.  Since you would need *letrec* anyway, I suggest Scheme (say,
> Racket). You will see what that implies. Compare the behaviour of
> strict and lazy Racket.

Maybe since Scheme and Racket are not typed things will go through there.  I
shall have to look into it.  I don't know the languages.

Tom


More information about the Haskell-Cafe mailing list