这个haskell代码中的(e) |e <- /=,x list e是什么?
perms :: Eq a => [a] -> [[a]]
perms [] = [[]]
perms list = do
x <- list
tails <- perms [(e) | e <- list, x /= e]
return (x:tails)发布于 2018-06-05 18:53:46
表达式
[(e) | e <- list, x /= e]是一种列表理解,这是一种从一些现有列表创建新列表的构造。
它返回由(e)生成的所有元素组成的列表,这些元素是通过从list获取每个e而生成的,只获取那些x /= e的元素。
在本例中,结果列表是list,其中所有的x值都已被删除。
整个列表的理解等同于filter (x /=) list。
我建议你读一本Haskell tutorial on list comprehensions。
https://stackoverflow.com/questions/50692224
复制相似问题