<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) =&gt; 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">&nbsp; &nbsp; show (Row row) = do</font></div><div
 style="background-color: transparent;"><font face="arial, helvetica, sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let xx = MV.read row 0</font></div><div style="background-color: transparent;"><font face="arial, helvetica, sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "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">&nbsp; &nbsp; 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;">&nbsp; &nbsp; Could not deduce (PrimState m ~ PrimState m0)</div><div style="background-color: transparent;">&nbsp; &nbsp; from the context (Storable s, MV.Unbox s, Prim s, PrimMonad m)</div><div style="background-color: transparent;">&nbsp; &nbsp; &nbsp; bound by a pattern with constructor</div><div style="background-color: transparent;">&nbsp; &nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Row :: forall (m :: * -&gt; *) s.</div><div style="background-color: transparent;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (Storable s, MV.Unbox s, Prim s, PrimMonad m) =&gt;</div><div style="background-color: transparent;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MV.MVector (PrimState m) s -&gt; Row,</div><div style="background-color: transparent;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;in an equation for `show'</div><div style="background-color: transparent;">&nbsp; &nbsp; NB: `PrimState' is a type function, and may not be injective</div><div style="background-color: transparent;">&nbsp; &nbsp; Expected type: MV.MVector (PrimState m0) s</div><div style="background-color: transparent;">&nbsp; &nbsp; &nbsp; Actual type: MV.MVector (PrimState m) s</div><div style="background-color: transparent;">&nbsp; &nbsp; In
 the first argument of `MV.read', namely `row'</div><div style="background-color: transparent;">&nbsp; &nbsp; 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>