----------------------------------------------------------------------------- -- | -- Module : BLAS.UnsafeIOToM -- Copyright : Copyright (c) , Patrick Perry -- License : BSD3 -- Maintainer : Patrick Perry -- Stability : experimental -- module BLAS.UnsafeIOToM ( UnsafeIOToM(..), ) where import Control.Monad.ST ( ST, unsafeIOToST, unsafeInterleaveST ) import System.IO.Unsafe( unsafeInterleaveIO ) class (Monad m) => UnsafeIOToM m where unsafeIOToM :: IO a -> m a unsafeInterleaveM :: m a -> m a instance UnsafeIOToM IO where unsafeIOToM = id {-# INLINE unsafeIOToM #-} unsafeInterleaveM = unsafeInterleaveIO {-# INLINE unsafeInterleaveM #-} instance UnsafeIOToM (ST s) where unsafeIOToM = unsafeIOToST {-# INLINE unsafeIOToM #-} unsafeInterleaveM = unsafeInterleaveST {-# INLINE unsafeInterleaveM #-}