Haskell 将[字符串]转换为(Int,Int)的函数

Haskell 将[字符串]转换为(Int,Int)的函数,haskell,Haskell,我已经在这个网站上潜伏了一段时间,所以我终于发布了我的第一个问题。 atm我必须做一个学校项目,这是与haskell一起创建Sokoban游戏,到目前为止,它一直很好,直到我到了必须验证坐标的部分。 他们就是这样来的 11.2 34 5.6 它应该返回“Ok” 我有一个函数,可以将它们转换为整数的元组,这样我就可以检查它们是否指向地图中的某个位置,但是如果是a或只是一个数字,该函数不会给我一个很好的错误消息,我需要它来做这件事,例如 a 11.2 34 消息应为“1”,如第1行中的错误。 13

我已经在这个网站上潜伏了一段时间,所以我终于发布了我的第一个问题。
atm我必须做一个学校项目,这是与haskell一起创建Sokoban游戏,到目前为止,它一直很好,直到我到了必须验证坐标的部分。
他们就是这样来的
11.2
34
5.6
它应该返回“Ok”
我有一个函数,可以将它们转换为整数的元组,这样我就可以检查它们是否指向地图中的某个位置,但是如果是a或只是一个数字,该函数不会给我一个很好的错误消息,我需要它来做这件事,例如
a
11.2
34
消息应为“1”,如第1行中的错误。
13
2
4.5
错误消息也应该是“2”
有没有办法做那种事,我已经没有主意了 将字符串转换为(Int,Int)的函数

注:上述功能与映射功能一起应用

在我已经尝试过但失败的事情中,有一件是按照

valcoor::Int->[String]->Int  
valcoor n []=-1   
valcoor n ((x,y):t)  
|isDigit x && isDigit y =valcoor (n+1) t 
|otherwise =n  
注意:很抱歉第一次发布问题,所以我犯了很多错误:D
我对这个函数编辑了很多次,所以我记不清它给出的错误消息的种类,尽管其中有
无法匹配预期的类型“[String]” 实际类型为“([[Char]],[[Char]])”
使用实际值(如

([“1”、“1”]、[“2”、“2”])

您需要创建一个将字符串输入转换为数据结构的

因为这是一个家庭作业,我不想给你一个直接的答案。相反,我建议你读一本很棒的书《真实世界哈斯克尔》,它解决了一个与你非常相似的问题。解析器将允许您获得精确且特定于位置的错误消息

请注意,您可能希望将整个输入视为一个
String
,以便解析器完成所有操作(包括计算行数等)。所以你要找的签名可能是

processcoordinates :: String -> Either ParseError [(Int, Int)]

其中
的左边部分描述了一个错误,右边部分描述了一个成功的结果。

欢迎使用堆栈溢出!社区希望您展示您现有的努力,即您尝试了什么,哪些成功了,哪些没有成功,您搜索了哪些文档,以及您在寻找解决方案时有了哪些想法等。您还应该问一些明确答案的具体问题,而不是“请帮助我”或“为我解决这个问题”。我强烈建议您阅读。向下投票人注意:如果您对一个新来者的问题向下投票,请添加一个解释,以便改进该问题。您尝试过的内容应该在问题中描述,而不是在评论中描述。同时给出一个没有任何解释的类型签名是远远不够的。细节是什么?函数是什么样子的?为什么它不起作用。。。
processcoordinates :: String -> Either ParseError [(Int, Int)]