我希望创建一个方法,可以给它一个长度列表,然后返回所有符合这些长度的笛卡尔坐标组合。通过以下示例更容易理解:
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 则让我头疼!
解决这个特定问题的方案将对我非常有帮助;我也很想听听您处理此类问题时的思考过程。