toh*_*ava 8 combinations haskell functional-programming tuples
在haskell中,给定一个元素列表,xs迭代重复所有对排列的最简单方法是:
[(x,y) | x <- xs, y <- xs]
Run Code Online (Sandbox Code Playgroud)
我希望能够做同样的事情,但仅限于组合.如果x和y具有可比性,我可以做到
[(x,y) | x <- xs, y <- xs, x > y]
Run Code Online (Sandbox Code Playgroud)
但我更喜欢一种更通用,更高效的解决方案(我知道,渐态复杂性将保持平方,但我们可以通过避免使用过滤条件来减少实际的运行时复杂性)
chi*_*chi 19
关于什么:
[ (x,y) | (x:rest) <- tails xs , y <- rest ]
Run Code Online (Sandbox Code Playgroud)