[Haskell-cafe] isWHNF :: a -> IO Bool ?

Tristan Allwood tora at zonetora.co.uk
Thu Sep 27 08:07:21 EDT 2007


Does anyone know if there is a function that tells you if a haskell
value has been forced or not?

isWHNF :: a -> IO Bool

let x = (map succ [0..]) in do
  putStrLn . show (isWHNF x)                -- False
  putStrLn . show . head $ x
  putStrLn . show (isWHNF x)                -- True
  putStrLn . show (isWHNF (Just undefined)) -- True

If not, would it be hard/easy/possible to implement on-top-of or using
GHC?  I'm happy (if it's possible) to have a stab at implementing it
myself, so any pointers to right directions would be helpful.

I'm thinking it could be useful to allow creation of sparse-check [1]
like libraries without needing a separate logic encoding, or things
along those lines / in that area.



[1] http://www-users.cs.york.ac.uk/~mfn/sparsecheck/index.html#lim

Tristan Allwood
PhD Student
Department of Computing
Imperial College London

More information about the Haskell-Cafe mailing list