According to this article on denotational semantics in haskell All types have bottom, and a function f:A->B is strict if it maps the bottom of type A to the bottom of type B, it is called non-strict other-wise.
(This is reminiscent of a pointed category where morphisms preserve the basepoint).
Why does Haskell have non-strict functions, whereas Standard ML doesn't?