
Daniel Fischer wrote:
Am Freitag 16 April 2010 16:25:08 schrieb Heinrich Apfelmus:
Philip Scott wrote:
What I want is something like putStrLn that doesn't print anything, and takes any type as its input, evaluates it to normal form and then does nothing else. It might be called something like 'evaluate' have a type like this
evaluate :: a -> IO()
With Hoogle, you can search for types:
http://haskell.org/hoogle/?hoogle=a+-%3E+IO+%28%29
12th result from the top.
That evaluates only to WHNF.
Control.DeepSeq.rnf seems to be closer, but requires NFData instances.
The documentation says that, but it does appear to go deeper than just one level: Debug.Trace Prelude Control.Exception> let a = trace "Hello" 42 Debug.Trace Prelude Control.Exception> let b = trace "Frank" (a * 2) Debug.Trace Prelude Control.Exception> evaluate b Frank Hello 84 Perhaps it specifies WHNF in case you 'evaluate' something which doesn't have a HNF (like a partially applied function?). - Philip