# newtype/datatype (was efficiency)

**Lennart Augustsson
**
lennart@augustsson.net

*Thu, 17 Jan 2002 21:08:00 +0100*

Dylan Thurston wrote:
>* If I understand it correctly, this makes
*>* \x.undefined :: a -> b
*>* different from
*>* undefined :: a -> b
*>* For instance, in this setup, the CPO
*>* [()->()]
*>* has four elements, in a totally ordered CPO; in increasing order, they
*>* are
*>* undefined
*>* const undefined
*>* id
*>* const ()
*>* Is it really clear the first two ('undefined' and 'const undefined') are
*>* different? Ken says they are observationally equivalent.
*
The two first are different:
seq undefined 0 gives bottom
seq (\ x -> undefined) 0 gives 0
When seq was introduced as a polymorphic function the function space in Haskell
got lifted. :-(
Not that in lambda calculus they are the same; seq is not lambda definable.
-- Lennart