Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.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读取文件中的N行?_Haskell_Io - Fatal编程技术网

如何使用Haskell读取文件中的N行?

如何使用Haskell读取文件中的N行?,haskell,io,Haskell,Io,我有以下格式的文件: 3 1 2 3 4 5 7 其中第一行是行数 我知道: getInt :: IO Int getInt = readLn main = do num <- getInt print (num) 阅读一行并获得一个列表:[a,b] 我试着在递归循环中使用上面的方法 loop :: Int -> IO() loop n = if 1 == n then do num <- readInts

我有以下格式的文件:

3
1 2
3 4
5 7
其中第一行是行数

我知道:

getInt :: IO Int
getInt = readLn 

main = do num <- getInt
          print (num)
阅读一行并获得一个列表:[a,b]

我试着在递归循环中使用上面的方法

loop :: Int -> IO()
loop n = if 1 == n then do num <- readInts 
                           print(num)
        else loop (n-1)

但是我需要阅读其余的行,因为N

您查看过函数
行了吗?它接受一个字符串并返回与列表相同的字符串,列表由
\n
分隔。使用此函数,您甚至不必知道行数。

您查看过函数
行数了吗?它接受一个字符串并返回与列表相同的字符串,列表由
\n
分隔。使用此函数,您甚至不必知道行数。

输入文件的格式与编程竞赛中使用的格式非常相似。以下是我的编程竞赛标准设置:

import Control.Monad
import Text.Printf

main :: IO ()
main = do
    n <- readLn
    forM_ [1 .. n] $ \i -> do
        printf "Case %d: " (i :: Int)
        solve

输入文件的格式与编程竞赛中使用的格式非常相似。以下是我的编程竞赛标准设置:

import Control.Monad
import Text.Printf

main :: IO ()
main = do
    n <- readLn
    forM_ [1 .. n] $ \i -> do
        printf "Case %d: " (i :: Int)
        solve

由于“不清楚你在问什么”,我投票结束了剩下的几行。如果你尝试过某件事但失败了,你需要告诉我们。什么都不试,先来这里。。。好吧,这个网站不是这样运作的。@DanielWagner和我投票支持社区支持我改进我的问题。。。在空置的地方criticisms@Alec谢谢,这对我有用。我用投票结束的
remainingLines
remainingLines“不清楚你在问什么”。如果你尝试过某件事但失败了,你需要告诉我们。什么都不试,先来这里。。。好吧,这个网站不是这样运作的。@DanielWagner和我投票支持社区支持我改进我的问题。。。在空置的地方criticisms@Alec谢谢,这对我有用。在我看来,这是一个有用且简单的解决方案!谢谢对于迭代“列表列表”,我修改了如下:
readInts::IO[Int]readInts=fmap(map read.words)getLine main::IO()main=do num do compare在我看来,这是一个有用且简单的解决方案!谢谢为了迭代“列表列表”,我修改了它,如下所示:
readInts::IO[Int]readInts=fmap(map read.words)getLine main::IO()main=do num do compare
import Control.Monad
import Text.Printf

main :: IO ()
main = do
    n <- readLn
    forM_ [1 .. n] $ \i -> do
        printf "Case %d: " (i :: Int)
        solve
solve :: IO ()
solve = do
    nums <- map read . words <$> getLine
    print (sum nums)