2017-04-11 25 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

newtypeを使用してTokenにレコードとは異なるタイプを指定します。それ以外の場合は、単に型エイリアスを定義するだけです。

import Prelude 

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

instance showToken :: Show Token where 
    show (Token t) = "(Token " <> t.identifier <> ", " <> t.value <> ")" 
関連する問題