Haskell使用indiс递归地将数据元素从字符串矩阵添加到矩阵中;锿

Haskell使用indiс递归地将数据元素从字符串矩阵添加到矩阵中;锿,haskell,recursion,matrix,nested-lists,Haskell,Recursion,Matrix,Nested Lists,请跳转到编辑: 我必须处理我作业中的一个问题,也许我在这个问题上完全错了,但我对函数式编程是新手 我有一个带字符串的5x5矩阵,我想读出它们,将它们转换成数据元素,并将其应用于新矩阵 我使用递归方法是因为我想将字符串的位置添加到数据元素中 以下是我尝试过的: cycleMatrix :: Int -> Int -> [[String]] -> [[Data]] cycleMatrix 0 0 matrix = (strToData 0 0 (matrix !! 0) !! 0)

请跳转到编辑:

我必须处理我作业中的一个问题,也许我在这个问题上完全错了,但我对函数式编程是新手

我有一个带字符串的5x5矩阵,我想读出它们,将它们转换成数据元素,并将其应用于新矩阵

我使用递归方法是因为我想将字符串的位置添加到数据元素中

以下是我尝试过的:

cycleMatrix :: Int -> Int -> [[String]] -> [[Data]]
cycleMatrix 0 0 matrix = (strToData 0 0 (matrix !! 0) !! 0))
cycleMatrix n 0 matrix = (cycleMatrix (n - 1) 0 matrix):(strToData n 5 ((matrix !! n) !! 5))
cycleMatrix n m matrix = (cycleMatrix n (m - 1) matrix):(strToData n n ((matrix !! n) !! m))
通过
strodata
我从矩阵中获取字符串,并传递x和y,返回一个数据对象(正在工作)

目前,我正试图将每个元素添加到一个数组中,但每次我在
m
上归零时,我真的想开始一个新列表(在
循环矩阵n0矩阵之后

我的问题是:这是要走的路吗?我如何以正确的方式附加这个元素

编辑:好的,我最终通过拆分函数实现了它(感谢鲁迪告诉我不要一下子做所有事情)

但我的问题仍然存在。我现在有8个列表,里面都是数据元素
我可以用
[]+[]]
将它们全部附加到一个列表中,但是有没有一种方法可以从列表中创建一个矩阵,比如
[]:[]
(将列表作为元素添加到列表中)?

我将通过将内部列表枚举到(x,数据)元组中,然后将该枚举枚举到(y,[x-List])来解决这个问题。这就是将其转换为所需格式的起点

您可以使用
:load file.hs
在ghci中加载此文件,并在其中使用不同的功能

根据你的编辑,我想这是你已经做过的

示例::[[String]]
示例=[
[“as”、“df”、“ghj”],
[“xx”,“yy”]
]
--为每个列表元素添加一个职位编号。当心
--这是从1开始的
枚举::[a]->[(Int,a)]
enumerate=zip[1..]
--执行枚举,但不转换
--将数据转换为所需的格式。我把它放在这里,这样
--不同功能的功能是
--更好理解。
类纽马拉特2D::[[a]]->[(Int,[(Int,a)])]
kindofEnumarate2d=枚举。地图枚举
--将一行(y,[(x,value)]元组转换为
--[((x,y),值)]列表
助手::(Int,[(Int,a)])->[(Int,Int,a)]
助手(y,xs)=[((x,y),s)|(x,s)[((Int,Int),a)]]
enumerate2d=映射帮助器。KindofEnumerate2D

是否要立即转换输入矩阵?是否必须使用递归,或者是否可以使用内置库?没有任何限制,我只需要包含数据元素的矩阵及其位置(我希望我可以用这一个解决家庭作业)因为这是家庭作业,我想你可能给的太多了。:-)这是一个很好的答案,我只是手工列举(0-8)我可以用你的解释来优化我的函数!@SimonShine我认为我在这里没有透露太多,因为已经有工作完成了。而且我没有找到一种方法来解释如何转换嵌套列表,而不编写一些代码。