GHC 7.10.2使用data . vector .Unbox . derived派生Unbox实例时发出警告



以下程序:

{-# LANGUAGE TemplateHaskell, RankNTypes, MultiParamTypeClasses, TypeFamilies #-}
import Data.Vector.Unboxed
import Data.Vector.Unboxed.Deriving
import Data.Word
data Pixel a = Pixel a deriving Show
derivingUnbox "Pixel"
    [t| forall a . (Unbox a) => Pixel a -> a |]
    [|  (Pixel a) -> a |]
    [|  a -> (Pixel a) |]
main = print $ Pixel 0

使用haskell模板为Pixel派生一个Unbox实例。它在GHC 7.8上工作,但在7.10.2上,我得到以下警告:

/Users/v/haskell/Tests/pix.hs:11:1: Warning:
    No explicit implementation for
      ‘Data.Vector.Generic.Mutable.Base.basicInitialize’
    In the instance declaration for
      ‘Data.Vector.Generic.Mutable.Base.MVector MVector (Pixel a_a6Ue)’

这是什么意思?

basicInitialize被添加到Data.Vector.Generic.Mutable.Base.MVector类以来,提供您正在使用的模板的vector-th-unboxed包尚未更新。您应该提交一个问题来修复宏,并且您可能希望您应该联系Hackage受托人,以了解如何在此期间调整vector-th-unbox的依赖界限。为vector的最新版本编写的代码很可能使用basicInitialize(直接或间接);当使用Point调用该函数时,它将抛出一个运行时错误。

有一个打开的pull请求来修复这个问题,但是维护者没有接受它。您可以自己查看并在本地应用。

最新更新