以下计划:
{-# 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)’
这是什么意思?
答案 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可以解决这个问题,但是维护者还没有接受它。您可能希望自己查看并在本地申请。