如何使用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谢谢,这对我有用。我用投票结束的remainingLinesremainingLines“不清楚你在问什么”。如果你尝试过某件事但失败了,你需要告诉我们。什么都不试,先来这里。。。好吧,这个网站不是这样运作的。@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)