2017-04-11 101 views
1

我试图对称为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,但它并没有提供任何有用的信息。这是什么意思,如何解决?

回答

1

使用newtypeToken一个与记录不同的类型。否则,你只是简单地定义一个类型别名。

import Prelude 

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

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