{-# LANGUAGE FlexibleContexts #-} module LineStorage where import Data.Array.IO data Core state a = Core a data Ready data Rotated data Sorted -- set :: MArray a e m => [e] -> Core Ready (m (a Int e)) set xs = do let l = length xs newListArray (0, l-1) xs -- get (Core core) = do -- getElems core