我是haskell的新手,需要一点帮助来解决问题。我有一个 XML 文件,我想解析其中的两件事。一个是一对数字,第二个只是一个字母。我使用两个函数来解析每个元素,并且这些函数的结果必须是“Maybe String”,否则它将不起作用。
问题是,当我显示结果时,它总是附有一个“Just”。所以如果我想显示类似(1,2)和B
我将拥有(仅“1”,仅“2”)和仅“B”
对于数字,我得到了解决方案。我已经使这个函数与我从对的解析中获得的列表一起工作:
pair:: [(Maybe String, Maybe String)] -> [(Int, Int)]
pair [] = []
pair ((Just x, Just y) : ls) = (read x, read y) : pair ls
它工作正常。但是我尝试对带有字母的列表做同样的事情,但它不起作用。
这是我的代码:
letter :: [Maybe String] -> [Char]
letter [] = []
letter (Just x : ls) = read x : letter ls
当我运行它时,我得到了正确的配对列表和这个错误
myfile.hs: Prelude.read: no parse
为什么会这样?读取功能有问题吗?