将列表转换为一组坐标[Haskell]

时间:2014-11-29 19:58:25

标签: haskell

我是一名初学程序员,拥有我的前几个编程课程。我们从函数式编程开始,在这种情况下使用Haskell。我已经设法完成了一些任务,但似乎已经陷入困境,希望得到一些帮助。

为了不让您厌烦整个代码,我的程序现在正在从文本文件中提取命令列表。我需要将此列表转换为一组坐标。我的意思是:

function :: [String] -> (Int, Int, Char)

例如,函数将接收列表[" 0 0 N"]并输出坐标和方向(0,0,N)。

我尝试过:

function [x y o] = (show x, show y, read o)

如果它只是整数,它将起作用。我似乎无法让Char部分工作。如果它是一个如此无聊的问题,我会道歉,但请耐心等待,我对这一切都很陌生。

谢谢你,最诚挚的问候!

1 个答案:

答案 0 :(得分:2)

对于您的特定测试用例,这应该有效:

function [(x:' ':y:' ':o:_)] = (read [x], read [y], o)

如果你的字符串包含空格,你需要匹配它们,如果你想这样做的话。

但那可能不是你真正想要的。对于["12 23 S"]["3 5 W", "2 8 E"]等输入,它会中断。

如果您的输入实际上是一个字符串列表,就像您的签名所说,您应该编写两个函数:一个处理单个字符串,另一个将您的其他函数应用于列表中的所有字符串。查看函数mapwords,并考虑如何使用它们来解决问题。