> I thought this inequality was one of the distinguishing characteristics of
> lazy functional programming relative to the standard lambda-calculus. To
> quote from Abramsky's contribution to "Research Topics in Functional
> Programming", Addison-Wesley 1990:
> 
>    Let O == (\x.xx)(\x.xx) be the standard unsolvable term. Then
> 
>    \x.O = O
> 
>    in the standard theory, since \x.O is also unsolvable; but \x.O is in
>    weak head normal form and hence should be distinguished from O in our
>    "lazy" theory.
Yes, internally \x.O != O, but since the only thing you can
do with a function is to apply it these two are observationally
equivalent.  Adding seq (or strict constructors) would constitute
another way of using function (checking for _|_) and would
thus distinguish them.
I think this is all right, but it makes eta conversion invalid.

        -- Lennart

Reply via email to