naudts guido wrote:
Take following function:
f::Array Int Char - (Array Int Char, Char)
f array = (array1, c)
where c = array!1
array1 = array//[(2,'b')]
and also following function:
f::Direct_access_file - (Direct_access_file, Char)
f daf = (daf1, c)
where c =
be deferred, omitted or duplicated so long as
the program's semantics are preserved, but I/O operations must be
performed as and when specified.
There are some special cases where you could get away with it when the
IO system gives us enough guarantees. You'd have to be very careful
however, to preserve