我试图在列表中得到可变数量的字符串的排列..我确信这在Haskell中是可能的,我只是很难找到这个的参考,
我希望能够做到这一点 [ [n1] ++ [n2] ++ etc | n1 <- {first string}, n2 <- {second string}, etc ]
我的名单可能在哪里 ["hey", "now"]
我的输出看起来像这样:
["hn","ho","hw","en","eo","ew","yn","yo","yw"]
我该怎么做呢?
chi*_*chi 11
> sequence ["hey", "now"]
["hn","ho","hw","en","eo","ew","yn","yo","yw"]
Run Code Online (Sandbox Code Playgroud)
sequence 非常通用,但在列表中,您可以将其视为定义如下:
sequence :: [[a]] -> [[a]]
sequence [] = [[]]
sequence (x:xs) = [ y:ys | y <- x, ys <- sequence xs ]
Run Code Online (Sandbox Code Playgroud)
上面的结果有时被称为列表列表的"笛卡尔积",因为它类似于集合上的操作.