{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, UndecidableInstances, Rank2Types #-} ----------------------------------------------------------------------------- -- | -- Module : Data.Matrix.Banded.ST -- Copyright : Copyright (c) , Patrick Perry -- License : BSD3 -- Maintainer : Patrick Perry -- Stability : experimental -- module Data.Matrix.Banded.ST ( -- * The @STBanded@ data type STBanded, runSTBanded, unsafeIOBandedToSTBanded, unsafeSTBandedToIOBanded, module Data.Matrix.Banded.Class, ) where import Control.Monad.ST import Data.Matrix.Banded.Internal( Banded(..) ) import Data.Matrix.Banded.Class import Data.Matrix.Banded.Class.Internal( STBanded, unsafeIOBandedToSTBanded, unsafeSTBandedToIOBanded ) runSTBanded :: (forall s . ST s (STBanded s mn e)) -> Banded mn e runSTBanded x = runST $ x >>= return . B . unsafeSTBandedToIOBanded