注釈付きの AST が必要なので、以下を使用して再帰的なデータ構造を定義しましたFix
。
data Term a
= Abstraction Name a
| Application a a
| Variable Name
deriving (Read,Show,Eq,Functor,Foldable,Traversable)
data Label a b
= Label a (Term b)
deriving (Read,Show,Eq,Functor,Foldable,Traversable)
newtype Labeled a
= Labeled (Fix (Label a))
deriving (Show)
できるようにしたいshow
のですLabeled a
が、コンパイラは満足していません:
No instance for (Show1 (Label a)) arising from the first field of `Labeled' (type `Fix (Label a)')
クラスShow1
とは何ですか?また、表示できるように適切なインスタンスを定義するにはどうすればよいLabeled a
ですか?