我在Haskell中有一个函数:
import qualified Codec.Picture as Juicy
--juicyLoad :: FilePath -> IO (Vector Word8)
juicyLoad file = do
image <- Juicy.readPng file
case image of
Left err -> undefined
Right (Juicy.ImageRGB8 (Juicy.Image w h dat)) ->
return dat
GHC将类型推断为FilePath -> IO (Vector Word8)
,这就是我想要的。当我在源文件(juicyLoad :: FilePath -> IO (Vector Word8)
)中实际定义它时,会出现错误:Couldn't match expected type 'Vector Word8' with actual type 'Vector(PixelBaseComponent PixelRGB8'.
这似乎是{-# LANGUAGE x #-}
选项的工作,我只是不知道哪一个
答案 0 :(得分:4)
Vector
有几种不同的版本。我能够通过明确导入由GHC推断出的相同内容来解决这个问题。
import qualified Codec.Picture as Juicy
import Data.Vector.Storable
import GHC.Word
并声明这样的类型:
juicyLoad :: FilePath -> IO (Vector Word8)
答案 1 :(得分:3)
问题是我导入了Vector
类型。我导入的是Data.Vector
,正确的导入是Data.Vector.Storable
。