无法读取haskell中的文件

7qhs6swi  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(198)

我一直在尝试使用haskell中的readFile语法,但当我尝试这样做时,我得到了一个错误,我不知道如何修复。
我的代码:

import System.Environment

maze_path = "maze2.txt"

get_maze :: String -> IO [String]
get_maze file = 
    do 
        x <- readFile file
        return (read x)

错误:

*** Exception: Prelude.read: no parse

使用"mape_path"字符串执行函数"get_maze"时出现此错误。
我只是想把文件的全部内容转换成常规的字符串格式,如有任何帮助,我将不胜感激。

k2arahey

k2arahey1#

这条线

x <- readFile file

按照您的假设工作,并将给定文件的内容作为String赋给变量x。错误由read函数抛出。
read函数将String转换为给定的输出类型。在您的示例中,给定get_maze :: String -> IO [String]类型,Haskell确定read必须具有String -> [String]类型。因此,文本文件应包含格式化的字符串数组,本质上就是您通过写入show ["Hello", "World"]["Hello","World"])所得到的数组。
文件似乎不是以这种方式格式化的。如果read不能解析输入,它将抛出上面的错误。在Haskell中有更健壮的方法来解析东西,但我可以想象你的文件只是没有以这种方式格式化,你想使用不同的函数。
例如,如果你只想得到一个行的列表,Haskell中有lines :: String -> [String]函数,它把一个字符串分割成一个行的列表。

相关问题