> 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


Reply via email to