使用 Data.Vector.Unboxed.Deriving 派生 Unbox 实例时出现 GHC 7.10.2 警告
GHC 7.10.2 warning when deriving Unbox instance using Data.Vector.Unboxed.Deriving
以下程序:
{-# 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
class 以来,提供您正在使用的模板的 vector-th-unboxed
包尚未更新。 您应该 file an issue to get the macro fixed, and you may wish to You should contact a Hackage trustee 查看如何同时调整 vector-th-unbox
的依赖范围。为 vector
的最新版本编写的代码可能会使用 basicInitialize
(直接或间接);当使用 Point
调用该函数时,它将引发运行时错误。
有一个 pull request 开放解决这个问题,但维护者没有接受它。不妨自己复习一下,在当地应用一下。
以下程序:
{-# 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
class 以来,提供您正在使用的模板的 vector-th-unboxed
包尚未更新。 您应该 file an issue to get the macro fixed, and you may wish to You should contact a Hackage trustee 查看如何同时调整 vector-th-unbox
的依赖范围。为 vector
的最新版本编写的代码可能会使用 basicInitialize
(直接或间接);当使用 Point
调用该函数时,它将引发运行时错误。
有一个 pull request 开放解决这个问题,但维护者没有接受它。不妨自己复习一下,在当地应用一下。