String 如何在haskell中将字母组合成两个字符串
我正在学习Haskell,并按照指南继续学习。我正处在这样一个点上,它显示:String 如何在haskell中将字母组合成两个字符串,string,haskell,char,list-comprehension,String,Haskell,Char,List Comprehension,我正在学习Haskell,并按照指南继续学习。我正处在这样一个点上,它显示: ghci> let nouns = ["hobo","frog","pope"] ghci> let adjectives = ["lazy","grouchy","scheming"] ghci> [adjective ++ " " ++ noun | adjective <- adjectives, noun <- nouns] ["lazy hobo","lazy fro
ghci> let nouns = ["hobo","frog","pope"]
ghci> let adjectives = ["lazy","grouchy","scheming"]
ghci> [adjective ++ " " ++ noun | adjective <- adjectives, noun <- nouns]
["lazy hobo","lazy frog","lazy pope","grouchy hobo","grouchy frog",
"grouchy pope","scheming hobo","scheming frog","scheming pope"]
ghci>let名词=[“流浪汉”、“青蛙”、“教皇”]
ghci>let形容词=[“懒惰”、“不高兴”、“诡计多端”]
ghci>[形容词++“”++名词|形容词++
仅适用于列表,但x
和y
仅是Char
。毕竟,它们是字符串的元素(=[Char]
),而LYAH示例有Char
列表:[String]=[Char]
:
-- [a] -> [a] -> [a]
-- vv vv
[y ++ ' ' ++ y | x <- "abd", y <- "bcd"]
-- ^ ^ ^
-- Char Char
-- vs
-- [String] [String]
-- vvvvvvvvvv vvvvv
[adjective ++ " " ++ noun | adjective <- adjectives, noun <- nouns]
-- ^^^^^^^ ^^^^
-- String String
这里的实际问题是,您试图连接三个字符,而函数仅为项目列表定义。
将实际连接两个列表,而不是两个单独的项目,并给出一个列表
因此,您可以通过将所有字符转换为字符串来修复程序,如下所示
> [[x] ++ " " ++ [y] | x <- "ab", y <- "cd"]
["a c","a d","b c","b d"]
> [[x] ++ (' ' : [y]) | x <- "ab", y <- "cd"]
["a c","a d","b c","b d"]
> [[x, ' ', y] | x <- "ab", y <- "cd"]
["a c","a d","b c","b d"]
或者,更简单、更直观地创建一个字符列表,如下所示
> [[x] ++ " " ++ [y] | x <- "ab", y <- "cd"]
["a c","a d","b c","b d"]
> [[x] ++ (' ' : [y]) | x <- "ab", y <- "cd"]
["a c","a d","b c","b d"]
> [[x, ' ', y] | x <- "ab", y <- "cd"]
["a c","a d","b c","b d"]
[[x',,y]| x我发现[x',,y]
这里的视觉效果很好。
> [[x, ' ', y] | x <- "ab", y <- "cd"]
["a c","a d","b c","b d"]