[Haskell-cafe] Re: isWHNF :: a -> IO Bool ?
Tristan Allwood
tora at zonetora.co.uk
Thu Sep 27 11:57:54 EDT 2007
On Thu, Sep 27, 2007 at 05:31:51PM +0200, apfelmus wrote:
> 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.
Indeed. Does it still mess up with the result in IO Bool (as was my
intent)?
Ah, I do realise my example use case above needs some =<<'s inserting
into it which may have led to some confusion.
Tris
--
Tristan Allwood
PhD Student
Department of Computing
Imperial College London
More information about the Haskell-Cafe
mailing list