I am following "Purescript by Example" book, and is implementing the code in Chapter 5. But I get a compilation error that I don't understand.
I get compilation error on this line (the code compiles without this line):
showPicture = map showShape
The error is:
No instance found for Prelude.Functor _67
And the error explanation does not make it clear for me. Why do I get this error?
I have these dependencies installed in my bower file:
"dependencies": {
"purescript-console": "^0.1.0"
"purescript-foldable-traversable": "~0.4.0",
"purescript-globals": "~0.2.0",
"purescript-math": "~0.2.0"
}
You need to add a type signature.
The map
function implies that you are using a Functor
(in this case Array
). So the general type of your function is
showPicture :: forall f. (Functor f) => f Shape -> f String
You probably meant the more specific type
showPicture :: Picture -> Array String
However, psc
does not yet infer constraints, so you need a type signature to guide it. Hopefully psc
will infer constraints before the 1.0 release, but for now, this is the workaround.