[Haskell-cafe] How to implement nested loops with tail recursion?
Johan Tibell
johan.tibell at gmail.com
Wed Sep 19 20:35:37 CEST 2012
On Wed, Sep 19, 2012 at 8:00 PM, <sdiyazg at sjtu.edu.cn> wrote:
> So how do I force IO actions whose results are discarded (including IO ()) to be strict?
In your particular case it looks like you want
Data.IORef.modifyIORef'. If your version of GHC doesn't include it you
can write it like so:
-- |Strict version of 'modifyIORef'
modifyIORef' :: IORef a -> (a -> a) -> IO ()
modifyIORef' ref f = do
x <- readIORef ref
let x' = f x
x' `seq` writeIORef ref x'
-- Johan
More information about the Haskell-Cafe
mailing list