我需要使用列表理解来生成这样的列表:[“ AaBB”,“ AbBB”,“ AcBB”,“ AdBB”,“ AeBB”,“ AfBB”,“ AgBB”]。但是我一直在创建表达式来解决这个问题
我尝试创建一个列表,其中每个元素都是字符串连接,类似“ A” + x +“ BB”,其中x是从“ a”开始到“ g”结束的一系列字母中的元素
module C where genList :: [String] genList = [ "A" ++ x ++ "BB" | x <- ["a" .. "g"]]
因此,我期望生成一个与问题中所要求清单相似的清单。但是相反,我只是遇到了此编译错误:
Prelude> :l exC [1 of 1] Compiling C ( exC.hs, interpreted ) exC.hs:3:41: error: • No instance for (Enum [Char]) arising from the arithmetic sequence ‘"a" .. "g"’ • In the expression: ["a" .. "g"] In a stmt of a list comprehension: x <- ["a" .. "g"] In the expression: ["A" ++ x ++ "BB" | x <- ["a" .. "g"]] | 3 | genList = [ "A" ++ x ++ "BB" | x <- ["a" .. "g"]] | ^^^^^^^^^^^^ Failed, no modules loaded.
Joseph Sible.. 5
您不能使用..
语法来构建字符串列表。幸运的是,您在这里将其用于单字符字符串,因此您可以仅使用它来构建字符列表:[ "A" ++ x : "BB" | x <- ['a' .. 'g']]
您不能使用..
语法来构建字符串列表。幸运的是,您在这里将其用于单字符字符串,因此您可以仅使用它来构建字符列表:[ "A" ++ x : "BB" | x <- ['a' .. 'g']]