Jan de Wit wrote:
> I think hyperstrict means that a function completely evaluates *all*
> of its arguments before the body of the function, as opposed to only
> some of them. [...]
Hmm, at the moment I've got no cunning books around, but my
understanding of `hyperstrict' was the following: A function f
is hyperstrict in its i'th argument a_i if it (recursively)
evaluates *all* parts of the argument. Or to put it into other
words: If any part of the argument is bottom, so is f ... a_i ...
Example: length is strict in its argument, but the following
function is hyperstrict (at least according to my definition :-) :
len :: Eq a => [a] -> Int
len [] = 0
len (x:xs) | x == x = 1 + len xs
This 'x == x' is folklore for getting rid of some space leaks,
AFAIK.
Cheers,
Sven
--
Sven Panne Tel.: +49/89/2178-2235
LMU, Institut fuer Informatik FAX : +49/89/2178-2211
LFE Programmier- und Modellierungssprachen Oettingenstr. 67
mailto:[EMAIL PROTECTED] D-80538 Muenchen
http://www.informatik.uni-muenchen.de/~Sven.Panne