Where prelude alternatives/ classes and types to get values?
Marc Weber
marco-oweber at gmx.de
Sat Feb 17 13:13:08 EST 2007
> m would have to be IO, c would be a bit pointless - so IO () is a
> better return type.
It doesn't have to be IO. It can also be implemented using liftIO . modify .. Then you can use htis modify function from any monad beeing an instance of IOMonad..
>
> You can then Hoogle for it: IORef a -> (a -> a) -> IO ()
>
> http://haskell.org/hoogle/?q=IORef%20a%20-%3E%20(a%20-%3E%20a)%20-%3E%20IO%20()
>
>
> ... = do (New count) <- modify ioCounterRef (+1)
>
> = do newcount <- modifyIORef ioCounterRef (+1)
>
> It already exists :)
Hi Neil.
Thanks for your hint. This time I already have found modifyIORef ;)
But as hoogle states:
Searched for modifyIORef Results 1 - 2 of 2
Data.IORef. modifyIORef :: IORef a -> (a -> a) -> IO ()
Data.IORef. atomicModifyIORef :: IORef a -> (a -> (a, b)) -> IO b
the return type of modifyIORef is IO (), not IO <new value>
So only using this function wouldn't solve the problem, right?
Marc
More information about the Libraries
mailing list