apfelmus <[EMAIL PROTECTED]> writes: > Tristan Allwood wrote: >> Does anyone know if there is a function that tells you if a haskell >> value has been forced or not? >> >> e.g. 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 > > but > > isWHNF (1+1) = False > > although 1+1 = 2. In other words, it messes up the language > semantics (extensional equality) which is bad.
Isn't it OK if it's a -> IO Bool ? (Admittedly, the test example above is wrong in that case). -- Jón Fairbairn [EMAIL PROTECTED] _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe