找不到Prelude.Functor

时间:2015-09-07 21:25:42

标签: purescript

我正在关注“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"
}

1 个答案:

答案 0 :(得分:1)

您需要添加类型签名。

map函数意味着您使用的是Functor(在本例中为Array)。所以你的函数的一般类型是

showPicture :: forall f. (Functor f) => f Shape -> f String 

你可能意味着更具体的类型

showPicture :: Picture -> Array String 

但是,psc尚未推断出约束,因此您需要一个类型签名来指导它。希望psc在1.0发布之前推断出约束,但是现在,这就是解决方法。