1

我正在关注“Purescript by Example”一书,并且正在实现第 5 章中的代码。但是我得到一个我不明白的编译错误。

我在这一行得到编译错误(代码在没有这一行的情况下编译):

showPicture = map showShape

错误是:

No instance found for Prelude.Functor _67

错误解释对我来说并不清楚。为什么我会收到此错误?

我在我的 bower 文件中安装了这些依赖项:

"dependencies": {
  "purescript-console": "^0.1.0"
  "purescript-foldable-traversable": "~0.4.0",
  "purescript-globals": "~0.2.0",
  "purescript-math": "~0.2.0"
}
4

1 回答 1

1

您需要添加类型签名。

map函数意味着您正在使用一个Functor(在这种情况下Array)。所以你的函数的一般类型是

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

您可能指的是更具体的类型

showPicture :: Picture -> Array String 

但是,psc它还没有推断出约束,因此您需要一个类型签名来指导它。希望psc能在 1.0 版本之前推断出约束,但目前,这是解决方法。

于 2015-09-08T15:14:34.183 回答