我正在关注“Purescript by Example”一书,正在实施the code in Chapter 5。但是我得到了一个我不理解的编译错误。
我在这一行收到编译错误(代码编译没有这行):
showPicture = map showShape
错误是:
No instance found for Prelude.Functor _67
error explanation对我来说并不清楚。为什么我会收到此错误?
我在我的凉亭文件中安装了这些依赖项:
"dependencies": {
"purescript-console": "^0.1.0"
"purescript-foldable-traversable": "~0.4.0",
"purescript-globals": "~0.2.0",
"purescript-math": "~0.2.0"
}
答案 0 :(得分:1)
您需要添加类型签名。
map
函数意味着您使用的是Functor
(在本例中为Array
)。所以你的函数的一般类型是
showPicture :: forall f. (Functor f) => f Shape -> f String
你可能意味着更具体的类型
showPicture :: Picture -> Array String
但是,psc
尚未推断出约束,因此您需要一个类型签名来指导它。希望psc
在1.0发布之前推断出约束,但是现在,这就是解决方法。