[Haskell-cafe] Re: isWHNF :: a -> IO Bool ?
apfelmus at quantentunnel.de
Thu Sep 27 11:31:51 EDT 2007
Tristan Allwood wrote:
> 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
Note that this function is not referentially transparent since
isWHNF 2 = True
isWHNF (1+1) = False
although 1+1 = 2. In other words, it messes up the language semantics
(extensional equality) which is bad.
More information about the Haskell-Cafe