我想创建一种方法,可以给它一个长度列表,它会返回达到这些长度的笛卡尔坐标的所有组合。用一个例子更容易解释:
cart [2,5]
Prelude> [ [0,0],[0,1],[0,2],[0,3],[0,4],[1,0],[1,1],[1,2],[1,3],[1,4] ]
cart [2,2,2]
Prelude> [ [0,0,0],[0,0,1],[0,1,0],[0,1,1],[1,0,0],[1,0,1],[1,1,0],[1,1,1] ]
简单的列表理解不起作用,因为我不知道列表有多长。虽然我喜欢 Haskell 解决许多问题的简单性,但我可以在 5 分钟内以程序方式(用 C 或其他语言)编写这个问题,而 Haskell 却给我带来了动脉瘤!
这个具体问题的解决方案会对我有很大帮助;我也很想听听您在处理此类问题时的思维过程。