以下代码
{-# LANGUAGE TypeSynonymInstances, FlexibleInstances #-}
module Function where
import qualified Data.Vector.Unboxed as V
import Control.Monad
type Function = V.Vector Double
instance Num Function where
(+) = liftM2 (+)
(*) = liftM2 (*)
negate = fmap negate
返回错误,如
No instance for (Monad V.Vector)
arising from a use of `liftM2'
虽然在文档中说Vector
是Monad的实例。
答案 0 :(得分:5)
未装箱Vector
不是Monad
的实例。请注意vector
包导出许多不同的类型,这些类型都称为Vector
。 Data.Vector.Unboxed.Vector / = Data.Vector.Vector / = Data.Vector.Storable.Vector。