<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">Why oh why doesn't this work as I expect, and what is the simplest fix?&nbsp; <br><br>speedTest 4 = 44<br><br>time :: (Show t) =&gt; IO t -&gt; IO t<br>time a = do<br>&nbsp;&nbsp;&nbsp; start &lt;- getCPUTime<br>&nbsp;&nbsp;&nbsp; v &lt;- a<br>&nbsp;&nbsp;&nbsp; end&nbsp;&nbsp; &lt;- getCPUTime<br>&nbsp;&nbsp;&nbsp; let diff = (fromIntegral (end - start)) / (10^12)<br>&nbsp;&nbsp;&nbsp; print v -- WHY DOESNT THIS WORK?&nbsp; ALWAYS PRINTS () ....<br>&nbsp;&nbsp;&nbsp; printf "Computation time: %0.3f sec\n" (diff :: Double)<br>&nbsp;&nbsp;&nbsp; return v<br><br>main :: IO ()<br>main = do<br>&nbsp;&nbsp;&nbsp; args &lt;- getArgs<br>&nbsp;&nbsp;&nbsp; time $ speedTest (read $ head args) `seq` return ()<br></td></tr></table><br>