Haskell 德克萨斯州在名单中的范围

Haskell 德克萨斯州在名单中的范围,haskell,matrix,Haskell,Matrix,这是一个学校项目 我必须生成一个包含范围的列表 例如: myLol x y z = [[ x , x-2 , ... , x-y+2 ], [ x-2 , x-4 , ... , x - y ], [ ... , ... , ... , ... ], [x-z+2 , x-z , ... , x-y-z+4]] 我的第一个想法是列出四个清单,并把它们放在一起,但这并没有给我第三排。 我试着在列表理解中加入列表理解,但结果并没有什么好处 我很确定生成第1、第2和第4列

这是一个学校项目

我必须生成一个包含范围的列表

例如:

myLol x y z = 
[[   x  , x-2 , ... ,  x-y+2 ],
 [  x-2 , x-4 , ... ,  x - y ],
 [  ... , ... , ... ,   ...  ],
 [x-z+2 , x-z , ... , x-y-z+4]]
我的第一个想法是列出四个清单,并把它们放在一起,但这并没有给我第三排。 我试着在列表理解中加入列表理解,但结果并没有什么好处

我很确定生成第1、第2和第4列,然后从这些值生成行就可以了。不过,我还没有足够的技术来理解它的代码

有什么想法吗

编辑: 我让它只适用于4x4矩阵。但不是动态工作

myLol x y z = [(row1 x y),(row2 x y),(row3 x y z),(row4 x y z)]

row1 x y =  take x [x,(x-1) .. (x-y+1)] 
row2 x y =  take x [(x-1),(x-2) .. (x-y)]
row4 x y z = take x [(x-z+1),(x-z) .. (x-y-z+2)] 

row3 x y z = [((row1 x y) !! 2),((row2 x y) !! 2) .. ((row4 x y z) !! 2)]

看起来您正在尝试这样做:

myLol x y z = [ [ x-i-j | i <- [0,2 .. y-2] ] | j <- [0,2 .. z-2]]

mylolxyz=[[x-i-j|i
mylolxyz=take(z'quot'2)[take(y'quot'2)[ξ,ξ-2..]|ξ嵌套列表理解应该很好。尝试类似于
[[x+y'x]的方法