类型同义词的类实例

时间:2012-03-10 15:40:17

标签: haskell

以下代码

{-# 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的实例。

1 个答案:

答案 0 :(得分:5)

未装箱Vector不是Monad的实例。请注意vector包导出许多不同的类型,这些类型都称为Vector。 Data.Vector.Unboxed.Vector / = Data.Vector.Vector / = Data.Vector.Storable.Vector。