Hi there,

I am very new to purescript and haskel as well, so currently i am working on a project to migrate purescript module from pulp to spago. Earlier with pulp there was no issue but while migrating i am facing this issue. Can someone help me on this. Thanks in advance.

```
The following type class members have not been implemented:
identity :: forall t. Price t t
in type class instance
Control.Category.Category Price
```

this is the issue, need some context on this issue.

1 Like

Hi and welcome!

I’ll take a guess here, and we can see if it helps with diagnosing the issue.

A little background first. Here’s the docs for `Category`

. A `Category`

is just a thing for which there is an `identity`

function defined. There’s *one* thing for which this definition already exists, which is `Function`

. So `identity :: forall t. a t t`

when we specialize `a`

= `Function`

would be simplified to

`forall t. Function t t`

or

`forall t. (->) t t`

or

`forall t. t -> t`

. And the implementation for that is

```
instance Category (->) where
identity x = x
```

In other words, `identity`

(for `Function`

) is just a function that returns exactly what it’s given as input.

Now, your error message there is saying that it expected to find that `Price`

was a `Category`

, and that didn’t work because there is no `identity`

definition for `Price`

. Now it could be that somebody was actually trying to make `Price`

into a `Category`

, but the more *likely* scenario in my opinion is that somebody used `identity`

where originally a function of `Price _ -> Price _`

was expected, and now instead of a function being expected, it’s just expecting a single `Price _`

value. This maybe is from a package having a breaking update in a later version or something. So when you try to pass `identity`

in now that it’s expecting a single `Price _`

value, the compiler thinks you’re trying to say that `Price`

is a `Category`

and gives you that error.

Any chance you can check around where the error is popping up to see if you are using `identity`

somewhere that’s not expecting a function (but maybe was expecting a function in an earlier version)?

1 Like

@ntwilson Thanks for answering my question. I will start diagnosing the issue today…