使用Data.Vector.Unboxed.Deriving派生Unbox实例时出现GHC 7.10.2警告

时间:2015-10-01 20:42:32

标签: haskell vector template-haskell unboxing

以下计划:

{-# 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)’

这是什么意思?

1 个答案:

答案 0 :(得分:2)

vector-th-unboxed类添加basicInitialize以来,提供您正在使用的模板的Data.Vector.Generic.Mutable.Base.MVector包尚未更新。 您应该file an issue修复宏,并且您可能希望您应该联系Hackage trustee以查看有关调整vector-th-unbox的依赖关系的信息。与此同时。为最新版本的vector编写的代码可能会使用basicInitialize(直接或间接);当使用Point调用该函数时,它将引发运行时错误。

有一个pull request可以解决这个问题,但是维护者还没有接受它。您可能希望自己查看并在本地申请。