在Haskell中制作一个方阵矩阵

时间:2013-03-20 10:23:29

标签: haskell multidimensional-array

我试图制作一个n * n矩阵 如果n = 2,则得到的矩阵为:

[[(1, 1), (1, 2)], [(2, 1), (2, 2)]]

即,2 * 2矩阵中的可用位置矩阵。

我尝试了以下内容:

myIndex :: Int -> [[(Int, Int)]]
myIndex (n+1) n  =  []
myIndex 1     n  =  [zip [1, 1..] [1, 2..n]] ++ myIndex 2 n 

但是出了点问题。究竟出了什么问题?

为清楚起见,考虑另一个n = 3的例子:

[[(1, 1), (1, 2), (1, 3)], [(2, 1), (2, 2), (2, 3)], [(3, 1), (3, 2), (3, 3)]] 

提前致谢。

1 个答案:

答案 0 :(得分:3)

您似乎想要一个像(x, y)这样的元素列表列表,其中x和y在[1..n]中。我们来写一下:

myIndex n = map (\x -> map (\y -> (x, y)) [1..n]) [1..n]

另一种说法是列表理解:

myIndex n = [ [(x, y) | y <- [1..n]] | x <- [1..n] ]