私はShowのインスタンスをカスタム型にしようとしています。Haskellの任意の再帰型でのショーの定義
ここにtheTypeがありますが、基本的なSetタイプです。
data Set a = Insert a (Set a) | EmptySet
私は
Insert 1 (Insert 2 (Insert 3 EmptySet))
のようなものが、私はこれを行うにはどうすればよい
{1, 2, 3}
のように表示したいのですが?私は文字列の連結でそれをやろうとしましたが、文字列補間を行うのが悪いフォームと考えられます(Haskellはこれをネイティブにサポートしていないようですか?)また、リストの中括弧はどうやって取得できますか?これまでのところ、私は調理することができたすべてはまた、私はこれが上に実装された方法を見ることができるようにリストの実装を見つけることHoogleとHayooを使用しようとした基本的に何もしないそれはこの、...
instance (Show a) => Show (Set a) where
show EmptySet = ""
show (Insert a as) = show a ++ show as
ましたリスト。私はそれを見つけることができませんでした。誰にもこれについての指針はありますか?私は "show :: [a] - > String"、 "Data.Lists"、 "Lists"などを検索しようとしました...
ところで、これはおそらく悪い考えです。 'show'の結果は、' show'に渡されたものと等しい値を生成する有効なHaskellコードでなければなりません。 'fromList'関数を定義し、セット{1、2、3}上の' show'を生成することを提案します。 'fromList [1、2、3]';これは、標準のData.MapおよびData.Setライブラリで採用されているアプローチです。あるいは、この表記法でセットを表示するために 'show'の代わりに呼び出される独自の関数を定義することもできます。 – ehird