1

コードは次のとおりです。

data Tree t = NilT
            | Node t (Tree t) (Tree t)

instance Show (Tree t) where
  show NilT = ""
  show Node t l r = (show t) ++ ", " ++ (show l) ++ ", " ++ (show r)

デフォルト設定で「tshow」の「show」を使用し、自分で定義したツリーデータで「show」を使用するにはどうすればよいですか?

4

2 に答える 2

1

補足:Data.List.intersperseリスト要素の間に値を入れる関数があります。

show (Node t l r) = concat $ intersperse ", " [show t, show l, show r]

ハンマーが指摘したように、または短く:

show (Node t l r) = intercalate ", " [show t, show l, show r]

map show [t, l, r]残念ながら、リスト要素には一意の型が必要なため、 と書くことはできません。

于 2011-09-21T08:06:15.730 に答える