ANN: monad-interleave 0.1

My two favorite functions in Haskell are "unsafeInterleaveIO" and "unsafeInterleaveST". I'm surprised there isn't a type class for them. I just fixed this by adding the "monad-interleave" package to hackage: http://hackage.haskell.org/cgi-bin/hackage-scripts/package/monad-interleave The package adds a "Control.Monad.Interleave" module. Here is the entirety of the module: \begin{code} -- | Monads that have an operation like 'unsafeInterleaveIO'. class Monad m => MonadInterleave m where -- | Get the baton from the monad without doing any computation. unsafeInterleave :: m a -> m a instance MonadInterleave IO where unsafeInterleave = unsafeInterleaveIO {-# INLINE unsafeInterleave #-} instance MonadInterleave (ST s) where unsafeInterleave = unsafeInterleaveST {-# INLINE unsafeInterleave #-} instance MonadInterleave (Lazy.ST s) where unsafeInterleave = Lazy.unsafeInterleaveST {-# INLINE unsafeInterleave #-} \end{code} Use it if you need it. Patrick
participants (1)
-
Patrick Perry