在Haskell中生成网格坐标的元组

ssc*_*lli 0 haskell grid-layout

我想编写一个函数来生成包含n×n网格坐标的元组列表.

例如:

> genGrid 2
[(0,0),(0,1),(1,0),(1,1)]
> genGrid 3
[(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过执行以下操作生成对角线:

genDiagonal n = zip [0..] [0..n-1]
Run Code Online (Sandbox Code Playgroud)

我想有一种相当简单的方法可以做到这一点,也许是我对角函数的变体,但是我的空白.

Dan*_*ner 5

range功能执行此操作:

Data.Ix> range ((0, 0), (2, 3))
[(0,0),(0,1),(0,2),(0,3),(1,0),(1,1),(1,2),(1,3),(2,0),(2,1),(2,2),(2,3)]
Run Code Online (Sandbox Code Playgroud)