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

showon 列表总是给你一个以 .String开头'['和结尾的']'. 如果你想要'{'and '}',只需替换它们。

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