
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". Tom, construct such a language, and I might believe you. 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. Best regards Jerzy