
#9112: support for deriving Vector/MVector instances -------------------------------------+------------------------------------ Reporter: jwlato | Owner: Type: feature request | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.8.2 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Unknown/Multiple Type of failure: None/Unknown | Difficulty: Unknown Test Case: | Blocked By: Blocking: | Related Tickets: -------------------------------------+------------------------------------ Comment (by bitemyapp): I am trying to build hackage-server on Mac OS X with GHC 7.8 and I was told this ticket is relevant to my problems. I've included the build error in this comment. {{{ When deriving the instance for (VecMut.MVector VecBase.MVector DocId) Distribution/Server/Features/Search/DocIdSet.hs:38:13: Could not coerce from ‘Data.Vector.Primitive.Mutable.MVector s Word32’ to ‘VecBase.MVector s DocId’ because ‘Data.Vector.Primitive.Mutable.MVector s Word32’ and ‘VecBase.MVector s DocId’ are different types. arising from the coercion of the method ‘VecMut.basicOverlaps’ from type ‘forall s. VecBase.MVector s Word32 -> VecBase.MVector s Word32 -> Bool’ to type ‘forall s. VecBase.MVector s DocId -> VecBase.MVector s DocId -> Bool’ Possible fix: use a standalone 'deriving instance' declaration, so you can specify the instance context yourself When deriving the instance for (VecMut.MVector VecBase.MVector DocId) Distribution/Server/Features/Search/DocIdSet.hs:38:13: Could not coerce from ‘Data.Vector.Primitive.Mutable.MVector s Word32’ to ‘VecBase.MVector s DocId’ because ‘Data.Vector.Primitive.Mutable.MVector s Word32’ and ‘VecBase.MVector s DocId’ are different types. arising from the coercion of the method ‘VecMut.basicUnsafeSlice’ from type ‘forall s. Int -> Int -> VecBase.MVector s Word32 -> VecBase.MVector s Word32’ to type ‘forall s. Int -> Int -> VecBase.MVector s DocId -> VecBase.MVector s DocId’ Possible fix: use a standalone 'deriving instance' declaration, so you can specify the instance context yourself When deriving the instance for (VecMut.MVector VecBase.MVector DocId) Distribution/Server/Features/Search/DocIdSet.hs:38:13: Could not coerce from ‘Data.Vector.Primitive.Mutable.MVector s Word32’ to ‘VecBase.MVector s DocId’ because ‘Data.Vector.Primitive.Mutable.MVector s Word32’ and ‘VecBase.MVector s DocId’ are different types. arising from the coercion of the method ‘VecMut.basicLength’ from type ‘forall s. VecBase.MVector s Word32 -> Int’ to type ‘forall s. VecBase.MVector s DocId -> Int’ Possible fix: use a standalone 'deriving instance' declaration, so you can specify the instance context yourself When deriving the instance for (VecMut.MVector VecBase.MVector DocId) }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9112#comment:6 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler