Bug in Control.Monad.State
iavor.diatchki at gmail.com
Wed Nov 23 17:20:51 EST 2005
I am still confused, sorry :-) It appears that the code has a type error:
repeatM randomItem :: State g [Int]
so, isn't 'item' of type '[Int]'. On the other hand, 'updateState' is
expecting an 'Int' as an argument...
> createItems :: RandomGen g => State g [Item]
> createItems =
> liftM catMaybes $ runListT $
> flip evalStateT initialState $ runMaybeT $
> item <- liftRandom $ repeatM randomItem
> updateState item
> needMoreItems >>= guard
> return item
> liftRandom = lift . lift . lift
> -- Create one random item.
> randomItem :: RandomGen g => State g Item
> randomItem = State $ randomR (1, 5)
> -- repeatM is still missing from Control.Monad.
> -- I hope they will put it in soon.
> repeatM :: Monad m => m a -> m [a]
> repeatM = sequence . repeat
More information about the Libraries