Haskell 中有没有什么快速的方法可以将这样的输入文件转换为相应的类型?例如,一个接受字符串并生成 Int
列表的函数?或者我是否需要使用 getLine
手动解析它并解析字符串?
10.
10.
[4, 3, 2, 1].
[(5,8,'~'), (6,4,'*'), (7,10,'~'), (8,2,'o')].
[4,0,9,4,7,5,7,4,6,4].
[4,10,0,6,6,5,6,5,6,2].
最佳答案
是的,read
功能。
例如,一旦您使用readFile
读取文件,您就可以读取
每一行以将其转换为您想要的类型。不过,您必须先摆脱经期。例如:
main = do
text <- readFile "test.txt"
let cases = lines text
-- to get rid of the periods at the end of each line
strs = map init cases
lastLine = read $ last strs
print $ show (map (+5) lastLine)
这将获取您的示例文件并从最后一行读取 Int
列表,然后将 5 添加到整个列表并打印它。
如果每一行都是相同的类型,您可以对所有行进行映射读取
以获取所有行。如果有不同的类型,就像在您的示例中一样,您必须放入一些逻辑来确定每一行的类型,然后调用适当的函数来处理该类型。
关于string - 在 Haskell 中解析输入文件文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17387400/