> Strictness only improves efficiency and narrows cases when a function is
> defined, but it can never improve correctness. There is no code that
> requires strictness to work at all.
>
> Unless we use extensions like GHC's Exception or unsafePerformIO. Or use
> hGetContents and want to explicitly close a file to work around limits of
> concurrently open files, or to write to that file, or to use
> Posix.forkProcess.
I think there are cases where strictness is a condition of correctness. It
depends on whether or not you are using bottom to model an element of your
intended semantic domain. Most programs don't: they only use bottom for
operational convenience, for laziness, say, or to model non-termination or
errors when the program is incorrect. But some programs make essential use of
bottom in a denotational way, and then functions defined on the type in
question are required to be strict.
I admit I can't think of any just now, though... :) Maybe someone else can
think of an example?
--
Frank Atanassow, Dept. of Computer Science, Utrecht University Padualaan 14,
PO Box 80.089, 3508 TB Utrecht, Netherlands Tel +31 (030) 253-1012, Fax +31
(030) 251-3791