0

Haskell では、パターン マッチを行うと、このサンプル コードのように強制的に展開する必要があります。

data Mlist a = Mlist [a]
instance Show a => Show (Mlist a) where
    show (Mlist xs) = show xs


m = Mlist [1, 2, 3]

次にm、インタープリターに入力すると、「{1,2,3}」が期待されますが、[1,2,3] が返されます。ここで何が問題なのですか?xsでshow関数を使用しているので、これでうまくいくと思いました。

4

1 に答える 1

3

showリストにあると、常にStringで始まり、'['で終わるが表示されます']'。必要に応じ'{''}'、それらを交換するだけです。

instance Show a => Show (Mlist a) where
    show (Mlist xs) = concat ["{", init . tail $ show xs, "}"]
于 2013-03-15T15:31:09.127 に答える