我想做一个方法,我可以给它一个长度列表,它会返回笛卡尔坐标的所有组合,直到这些长度。用一个例子更容易解释:
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 给了我一个动脉瘤!
解决这个特定问题会对我有很大帮助;我也很想听听您在处理此类问题时的思维过程。