我正在尝试在Haskell中制作一个简单的程序,该程序从用户输入的和弦列表中生成吉他标签。我是Haskell的新手,并且很难弄清String列表的一些基础知识。
标签的格式:
--1----3--
--1----5--
--1----5--
--3----5--
--3----3--
--1----3--
我首先声明一个空字符串,然后以以下形式一次将和弦添加到其中:
[[line1],
[line2],
[line3],
[line4],
[line5],
[line6]]
每当我将新的和弦添加到要构建的选项卡时,我都需要将适合该和弦的String限制在我的六行内容中
我正在尝试做这样的事情:
addG :: [String] -> [String]
addG (a:b:c:d:e:f) = [[a++gOne],[b++gTwo],[c++gThree],[d++gFour],[e++gFive],[f++gSix]]
其中:
gOne :: String
gOne = "---3---"
gTwo :: String
gTwo = "---3---"
等
使用这种特定语法,我在ghci中收到以下错误:
project.hs:40:24: error:
Couldn't match expected type 'Char' with actual type '[Char]'
In the expression: a ++ gOne
In the expression: [a ++ gOne]
In the expression:
[[a ++ gOne], [b ++ gTwo], [c ++ gThree], [d ++ gFour], ....]
对于其他每个字符串b-f,我又得到五次完全相同的错误。