什么是[(e)| haskell中的e< - list,x / = e]

时间:2018-06-05 04:47:16

标签: haskell

[(e)|这个haskell代码中的e< - list,x / = e]?

perms :: Eq a => [a] -> [[a]]
perms [] = [[]]
perms list = do
   x <- list
   tails <- perms [(e) | e <- list, x /= e]
   return (x:tails)

1 个答案:

答案 0 :(得分:3)

表达式

[(e) | e <- list, x /= e]

是一个列表理解,它是一个从一些现有列表中创建新列表的构造。

它会返回由(e)中的每个e生成的所有元素list组成的列表,仅包含x /= e的{​​{1}}。

在这种情况下,结果列表为list,其中所有x值都已删除。

整个列表理解等同于filter (x /=) list

我建议您阅读Haskell tutorial on list comprehensions