类型 class 类型同义词的实例是不允许的

Type class instances for type synonyms are disallowed

我尝试为名为 Token 的自定义类型实现 show 函数。我试过以下代码:

type Token =
    { identifier :: String
    , value :: String
    }

instance showToken :: Show Token where
    show t = "(Token " <> t.identifier <> ", " <> t.value <> ")"

但是我收到以下错误:

Type class instances for type synonyms are disallowed.

错误提供了 link,但没有提供任何有用的信息。这是什么意思,如何解决?

使用 newtypeToken 提供与记录不同的类型。否则,您只是在定义一个类型别名。

import Prelude

newtype Token = Token
  { identifier :: String
  , value :: String
  }

instance showToken :: Show Token where
  show (Token t) = "(Token " <> t.identifier <> ", " <> t.value <> ")"