我制作了这些数据类型来表示吉他标签,我尝试编写show
函数将它们打印为真正的吉他标签。 data
不是我的专长,而且我在匹配类型方面遇到了麻烦。
错误是
`show'的方程式有不同数量的论点 在GHC.Show.Show Tabs.Chord'
的实例声明中
代码:
type Strings = Int
data Fret = None | Note Int
instance Show Fret where
show None = "-"
show (Note a) = show a
data Chord = EmptyChord Strings | Chord [Fret]
instance Show Chord where
show EmptyChord a = init $ take (a * 2) ['-', '\n' ..]
show Chord (x : xs) = x : '\n' : show xs
答案 0 :(得分:6)
第二个实例需要更多括号:
instance Show Chord where
show (EmptyChord a) = init $ take (a * 2) ['-', '\n' ..]
show (Chord (x : xs)) = x : '\n' : show xs