<html><body><div style="color:#000; background-color:#fff; font-family:arial, helvetica, sans-serif;font-size:12pt"><div style="font-family: arial, helvetica, sans-serif; font-size: 12pt;">Hi</div><div style="font-family: arial, helvetica, sans-serif; font-size: 12pt;"><br></div><div style="font-family: arial, helvetica, sans-serif; font-size: 16px; color: rgb(0, 0, 0); background-color: transparent; font-style: normal;">I am trying to implement Show for a storable-mutable-vector.</div><div style="font-family: arial, helvetica, sans-serif; font-size: 16px; color: rgb(0, 0, 0); background-color: transparent; font-style: normal;"><br></div><div style="font-family: arial, helvetica, sans-serif; font-size: 16px; color: rgb(0, 0, 0); background-color: transparent; font-style: normal;">Does anyone have a clue why the type-system is killing me :-)</div><div style="font-family: arial, helvetica, sans-serif; font-size: 16px; color: rgb(0, 0, 0); background-color:
transparent; font-style: normal;"><br></div><div style="font-family: arial, helvetica, sans-serif; font-size: 16px; color: rgb(0, 0, 0); background-color: transparent; font-style: normal;">Code is below...</div><div style="font-family: arial, helvetica, sans-serif; font-size: 16px; color: rgb(0, 0, 0); background-color: transparent; font-style: normal;"><br></div><div style="font-family: arial, helvetica, sans-serif; font-size: 16px; color: rgb(0, 0, 0); background-color: transparent; font-style: normal;">Cheers</div><div style="font-family: arial, helvetica, sans-serif; font-size: 16px; color: rgb(0, 0, 0); background-color: transparent; font-style: normal;"><br></div><div style="font-family: arial, helvetica, sans-serif; font-size: 16px; color: rgb(0, 0, 0); background-color: transparent; font-style: normal;">Felix</div><div style="font-family: arial, helvetica, sans-serif; font-size: 16px; color: rgb(0, 0, 0); background-color: transparent;
font-style: normal;"><br></div><div style="font-family: arial, helvetica, sans-serif; font-size: 16px; color: rgb(0, 0, 0); background-color: transparent; font-style: normal;">----</div><div style="font-family: arial, helvetica, sans-serif; font-size: 16px; color: rgb(0, 0, 0); background-color: transparent; font-style: normal;"><br></div><div style="background-color: transparent;"><div style="background-color: transparent;"><font face="arial, helvetica, sans-serif">{-# LANGUAGE ExistentialQuantification #-}</font></div><div style="background-color: transparent;"><font face="arial, helvetica, sans-serif"><br></font></div><div style="background-color: transparent;"><font face="arial, helvetica, sans-serif">import Control.Monad (liftM2)</font></div><div style="background-color: transparent;"><font face="arial, helvetica, sans-serif">import qualified Data.Vector.Unboxed as V</font></div><div style="background-color: transparent;"><font face="arial,
helvetica, sans-serif">import qualified Data.Vector.Unboxed.Mutable as MV</font></div><div style="background-color: transparent;"><font face="arial, helvetica, sans-serif">import Data.Vector.Storable.Mutable</font></div><div style="background-color: transparent;"><font face="arial, helvetica, sans-serif">import GHC.Prim (RealWorld)</font></div><div style="background-color: transparent;"><font face="arial, helvetica, sans-serif">import Control.Monad.Primitive</font></div><div style="background-color: transparent;"><font face="arial, helvetica, sans-serif">import Control.Monad</font></div><div style="background-color: transparent;"><font face="arial, helvetica, sans-serif">import qualified Data.Vector as VEC</font></div><div style="background-color: transparent;"><font face="arial, helvetica, sans-serif">import qualified Data.Vector.Generic.Mutable as GM</font></div><div style="background-color: transparent;"><font face="arial, helvetica,
sans-serif">import Data.Int</font></div><div style="background-color: transparent;"><font face="arial, helvetica, sans-serif">import Data.Typeable.Internal</font></div><div style="background-color: transparent;"><font face="arial, helvetica, sans-serif">import Data.Primitive</font></div><div style="background-color: transparent;"><font face="arial, helvetica, sans-serif"><br></font></div><div style="background-color: transparent;"><font face="arial, helvetica, sans-serif">data Row = forall m s. (Storable s, MV.Unbox s, Prim s, PrimMonad m) => Row (MV.MVector (PrimState m) s)</font></div><div style="background-color: transparent;"><font face="arial, helvetica, sans-serif"><br></font></div><div style="background-color: transparent;"><font face="arial, helvetica, sans-serif">instance Show Row where</font></div><div style="background-color: transparent;"><font face="arial, helvetica, sans-serif"> show (Row row) = do</font></div><div
style="background-color: transparent;"><font face="arial, helvetica, sans-serif"> let xx = MV.read row 0</font></div><div style="background-color: transparent;"><font face="arial, helvetica, sans-serif"> "Done"</font></div><div style="background-color: transparent;"><font face="arial, helvetica, sans-serif"><br></font></div><div style="background-color: transparent;"><font face="arial, helvetica, sans-serif">main :: IO ()</font></div><div style="background-color: transparent;"><font face="arial, helvetica, sans-serif">main = do</font></div><div style="background-color: transparent;"><font face="arial, helvetica, sans-serif"> print "Done"</font></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-size: 16px; font-family: arial, helvetica, sans-serif; font-style: normal;"><font
face="arial, helvetica, sans-serif"><br></font></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-size: 16px; font-family: arial, helvetica, sans-serif; font-style: normal;"><font face="arial, helvetica, sans-serif">I get this error:</font></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-size: 16px; font-family: arial, helvetica, sans-serif; font-style: normal;"><font face="arial, helvetica, sans-serif"><br></font></div><div style="background-color: transparent;"><font face="arial, helvetica, sans-serif"><div style="background-color: transparent;"> Could not deduce (PrimState m ~ PrimState m0)</div><div style="background-color: transparent;"> from the context (Storable s, MV.Unbox s, Prim s, PrimMonad m)</div><div style="background-color: transparent;"> bound by a pattern with constructor</div><div style="background-color: transparent;">
Row :: forall (m :: * -> *) s.</div><div style="background-color: transparent;"> (Storable s, MV.Unbox s, Prim s, PrimMonad m) =></div><div style="background-color: transparent;"> MV.MVector (PrimState m) s -> Row,</div><div style="background-color: transparent;"> in an equation for `show'</div><div style="background-color: transparent;"> NB: `PrimState' is a type function, and may not be injective</div><div style="background-color: transparent;"> Expected type: MV.MVector (PrimState m0) s</div><div style="background-color: transparent;"> Actual type: MV.MVector (PrimState m) s</div><div style="background-color: transparent;"> In
the first argument of `MV.read', namely `row'</div><div style="background-color: transparent;"> In the expression: MV.read row 0</div><div style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; font-size: 16px; font-style: normal;"><br></div></font></div></div></div></body></html>