[project @ 2002-10-15 08:56:50 by simonpj]
[ghc-hetmet.git] / ghc / compiler / basicTypes / Demand.lhs
index f42e1d7..8e8f24f 100644 (file)
@@ -18,12 +18,12 @@ module Demand(
        ppStrictnessInfo, seqStrictnessInfo,
        isBottomingStrictness, appIsBottom,
 
-       StrictnessMark(..), isMarkedUnboxed, isMarkedStrict
      ) where
 
 #include "HsVersions.h"
 
 import Outputable
+import Util ( listLengthCmp )
 \end{code}
 
 
@@ -192,7 +192,7 @@ isBottomingStrictness (StrictnessInfo _ bot) = bot
 isBottomingStrictness NoStrictnessInfo       = False
 
 -- appIsBottom returns true if an application to n args would diverge
-appIsBottom (StrictnessInfo ds bot)   n = bot && (n >= length ds)
+appIsBottom (StrictnessInfo ds bot)   n = bot && (listLengthCmp ds n /=GT) -- not more than 'n' elts in 'ds'.
 appIsBottom  NoStrictnessInfo        n = False
 
 ppStrictnessInfo NoStrictnessInfo                 = empty
@@ -200,34 +200,5 @@ ppStrictnessInfo (StrictnessInfo wrapper_args bot) = hsep [pprDemands wrapper_ar
 \end{code}
 
 
-%************************************************************************
-%*                                                                     *
-\subsection{Strictness indication}
-%*                                                                     *
-%************************************************************************
-
-The strictness annotations on types in data type declarations
-e.g.   data T = MkT !Int !(Bool,Bool)
-
-\begin{code}
-data StrictnessMark
-   = MarkedUserStrict  -- "!"  in a source decl
-   | MarkedStrict      -- "!"  in an interface decl: strict but not unboxed
-   | MarkedUnboxed     -- "!!" in an interface decl: unboxed 
-   | NotMarkedStrict   -- No annotation at all
-   deriving( Eq )
-
-isMarkedUnboxed MarkedUnboxed = True
-isMarkedUnboxed other        = False
-
-isMarkedStrict NotMarkedStrict = False
-isMarkedStrict other          = True   -- All others are strict
-
-instance Outputable StrictnessMark where
-  ppr MarkedUserStrict = ptext SLIT("!u")
-  ppr MarkedStrict     = ptext SLIT("!")
-  ppr MarkedUnboxed    = ptext SLIT("! !")
-  ppr NotMarkedStrict  = empty
-\end{code}