[Haskell-beginners] Forcing output of show

Hugo Ferreira hmf at inescporto.pt
Wed Oct 26 16:40:36 CEST 2011


On 10/26/2011 03:29 PM, Daniel Fischer wrote:
> On Wednesday 26 October 2011, 16:23:20, Hugo Ferreira wrote:
>> Hello,
>>
>> Apologies for this newbie question.
>> I have a test function:
>>
>> testLearnRules train = do
>>     h<- IO.openFile train IO.ReadMode
>>     c<- IO.hGetContents h
>>     let proposedRules = instRules $ words c
>>     let rs = take 10 $ M.assocs proposedRules
>>     let _ = show rs
>>     -- let _ = length rs
>>     return ()
>>
>> I realize that nothing is executed due to Haskell's
>> lazy evaluation. How can I force show to print
>> something to the screen?
>
> You can't force show to rpint something, since show is a pure function not
> involving IO.
> However, testLearnRules does involve IO, so instead of
>
>      let _ = show rs
>
> you could simply print it out,
>
>      print rs
>
> -- equivalently, putStrLn (show rs)
>

Thank you,

Hugo F.

>>
>> Appreciate any pointers,
>>
>> TIA,
>> Hugo F.
>




More information about the Beginners mailing list