Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell IO:读取整个文本文件 import System.IO 导入文本.Printf kodable::IO() kodable=do printf“请加载地图:” 文件[字符串] loadMap fp=do 已完成导入System.IO 导入文本.Printf kodable::IO() kodable=do printf“请加载地图:” 文件import System.IO 导入文本.Printf kodable::IO() kodable=do printf“请加载地图:” file_Haskell_File Io_Io - Fatal编程技术网

Haskell IO:读取整个文本文件 import System.IO 导入文本.Printf kodable::IO() kodable=do printf“请加载地图:” 文件[字符串] loadMap fp=do 已完成导入System.IO 导入文本.Printf kodable::IO() kodable=do printf“请加载地图:” 文件import System.IO 导入文本.Printf kodable::IO() kodable=do printf“请加载地图:” file

Haskell IO:读取整个文本文件 import System.IO 导入文本.Printf kodable::IO() kodable=do printf“请加载地图:” 文件[字符串] loadMap fp=do 已完成导入System.IO 导入文本.Printf kodable::IO() kodable=do printf“请加载地图:” 文件import System.IO 导入文本.Printf kodable::IO() kodable=do printf“请加载地图:” file,haskell,file-io,io,Haskell,File Io,Io,我看你已经决定坚持你的第一个答案了。但我只想把这个解决方案放在这里,这样你就可以对未来有一个想法。我将使用一些“复杂”的函数,这些函数到目前为止可能是您无法使用的 首先,kodable可以简化为: import System.IO import Text.Printf kodable :: IO() kodable = do printf "Please load a map : " file <- getLine map <- rea

我看你已经决定坚持你的第一个答案了。但我只想把这个解决方案放在这里,这样你就可以对未来有一个想法。我将使用一些“复杂”的函数,这些函数到目前为止可能是您无法使用的

首先,
kodable
可以简化为:

import System.IO

import Text.Printf

kodable :: IO()
kodable = do
    printf "Please load a map : "
    file <- getLine
    map <- readFile file
    printf "Read map successfully! \n"
    printf "Initial:\n"
    outputMap map

outputMap :: String -> IO()
outputMap (x) = printf "%s\n" x
outputMap (x:xs) = do
    printf "%s\n" x
    outputMap xs
funky
>=
函数只是处理IO单子的一种方法,因此我们不必展开和包装值。我不想详述,因为这超出了这个问题的范围

kodable :: IO ()
kodable = getMapFile >>= readFile >>= outputMap
这个函数所做的就是打印出提示,然后获取输入的任何内容。
>
只会忽略左侧的返回值

readFile
执行您期望的操作,它从getMapFile获取文件名并读取文件内容

getMapFile :: IO String
getMapFile = putStr "Please load a map: " >> getLine
这里的最后一个函数与
loadMap
outputMap
在代码中的作用完全相同<代码>行相当于
加载映射
,它根据换行符将输入文件拆分为单独的字符串。我知道你是在尝试递归思考,只是在学习,但是有很多有用的功能可以让你的生活更轻松


文件内容分为几行后,我们可以使用一元映射函数
mapM
,它基本上将
putStrLn
应用于列表中的每一行。

我看到您已经决定坚持第一个答案。但我只想把这个解决方案放在这里,这样你就可以对未来有一个想法。我将使用一些“复杂”的函数,这些函数到目前为止可能是您无法使用的

首先,
kodable
可以简化为:

import System.IO

import Text.Printf

kodable :: IO()
kodable = do
    printf "Please load a map : "
    file <- getLine
    map <- readFile file
    printf "Read map successfully! \n"
    printf "Initial:\n"
    outputMap map

outputMap :: String -> IO()
outputMap (x) = printf "%s\n" x
outputMap (x:xs) = do
    printf "%s\n" x
    outputMap xs
funky
>=
函数只是处理IO单子的一种方法,因此我们不必展开和包装值。我不想详述,因为这超出了这个问题的范围

kodable :: IO ()
kodable = getMapFile >>= readFile >>= outputMap
这个函数所做的就是打印出提示,然后获取输入的任何内容。
>
只会忽略左侧的返回值

readFile
执行您期望的操作,它从getMapFile获取文件名并读取文件内容

getMapFile :: IO String
getMapFile = putStr "Please load a map: " >> getLine
这里的最后一个函数与
loadMap
outputMap
在代码中的作用完全相同<代码>行相当于
加载映射
,它根据换行符将输入文件拆分为单独的字符串。我知道你是在尝试递归思考,只是在学习,但是有很多有用的功能可以让你的生活更轻松


文件内容分为几行后,我们可以使用一元映射函数
mapM
,它基本上将
putStrLn
应用于列表中的每一行。

您有什么具体问题?请详细描述。此外,name
map
与其他函数重叠,因此应该使用其他名称。我仍在试图找出导致错误的原因。我认为应该是语法错误。Haskell的语法对meThis来说仍然非常混乱,这段代码无论如何都无法编译。有许多类型不匹配。编译器会指出您的错误,所以请通过引用来更正代码。而且代码太大,无法立即编译,因此应该先尝试较小的代码。例如,只读取一个文件并输出内容。为什么不直接使用
readFile
?您有什么具体问题?请详细描述。此外,name
map
与其他函数重叠,因此应该使用其他名称。我仍在试图找出导致错误的原因。我认为应该是语法错误。Haskell的语法对meThis来说仍然非常混乱,这段代码无论如何都无法编译。有许多类型不匹配。编译器会指出您的错误,所以请通过引用来更正代码。而且代码太大,无法立即编译,因此应该先尝试较小的代码。例如,只读取一个文件并输出内容。为什么不使用
readFile