のインスタンスである必要がありAlgebricデータ型GHCは、 'Show(MyType t)'の型 't'が実際に(show x)に必要なShowのインスタンスであると推論することはできないため、GHCは苦情を申し立てます。ハスケル:そのタイプの変数私はalgebricタイプを定義しようとしています型クラス
Showのどこにどのように宣言すればいいですか?
のインスタンスである必要がありAlgebricデータ型GHCは、 'Show(MyType t)'の型 't'が実際に(show x)に必要なShowのインスタンスであると推論することはできないため、GHCは苦情を申し立てます。ハスケル:そのタイプの変数私はalgebricタイプを定義しようとしています型クラス
Showのどこにどのように宣言すればいいですか?
はt
の種類の型の制約を追加します。
instance Show t => Show (MyType t) where
show (MyType x) = "MyType: " ++ (show x)
あなたは可能性もちょうど:
data MyType t = MyType t
deriving Show
あなたは、通常の番組フォーマットをしたい場合。
A更に別の解決策はGADTsを使用することである。
data MyType t where
MyType :: Show a => a -> MyType a