2017-03-29 39 views
-1

ghci的是給我的錯誤(顯示)「沒有實例(顯示)因使用而產生的‘commaSeperated’」沒有實例產生

什麼即時試圖做的是定義一個顯示爲我的數據集使用大括號而不是方形。我在這裏做錯了什麼?

data Set a = Set [a] 

instance Show (Set a) where 
    show (Set a) = "{" ++ init (commaSeparated a) ++ "}" 

commaSeparated :: Show a => [a] -> [Char] 
commaSeparated [] = "" 
commaSeparated (x:xs) = show x ++ "," ++ commaSeparated xs 
+1

另請嘗試'commaSeparated = intercalate「,」。導入Data.List'後的地圖顯示。它不會輸出拖尾的逗號,所以你不必使用'init'來刪除它。 – chi

回答

7

您的instance聲明沒有上下文。將其重寫爲instance Show a => Show (Set a)