Strictness (was: Is this tail recursive?)

Andrew Butterfield
Thu, 14 Mar 2002 10:27:41 +0000

At 22:47 13/03/02 -0600, Jay Cox wrote:
>Perhaps what could be done about this strictness business is to make a
>kind of strictness annotation.  Perhaps something that says (force the
>second argument of function F before every call to F (including any time F
>calls itself)).

>here's a rough example.  !a mean !a will be forced at its application (for
>not knowing proper language to call it).
>strict_foldl :: (a -> b -> a) -> !a -> [b] -> a
>strict_foldl = foldl
>of course, there has to be a number of things that must be propagated
>whence you start adding these things. like for instance.
>How about it?  Has there been any other proposals? (like maybe going as
>far as a "Strictness Type" system?)

I think the Clean type system does stuff like this - it certainly supports
strictness analysis and annotations:
  - see for more details

>Haskell mailing list

Dr. Andrew Butterfield (
Course Director, B.A. (Mod.) Information & Communications Technology
Dept.of Computer Science, Trinity College, Dublin University
Tel: +353-1-608-2517, Fax: +353-1-677-2204