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

2007-09-27 Thread Tristan Allwood
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
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


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

2007-09-27 Thread Jonathan Cast
On Thu, 2007-09-27 at 16:57 +0100, Tristan Allwood wrote:
 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)? 

In IO this should be fine, as IO is explicitly a non-determinism monad
(along with everything else).

jcc

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe