K
katerina99
И снова вас беспокоит программист-недоучка... добрые люди,переведите,пожалуйста,на человеческий язык то,что делает эта программа...Желательно поподробнее...Буду очень благодарна!!!
Код:
module Parser where
import IO
import System
execute funct = getArgs >>= parser funct (Nothing,Nothing)
parser funct (cnt,hFile) [] = funct (maybe 10 id cnt) (maybe stdin id hFile)
parser funct (Nothing, hFile) ("-n":n:othr) = parser funct (Just (read n :: Int), hFile) othr
parser funct (Nothing, _) ["-n"] = error "wrong args"
parser funct (cnt, Nothing) (path:othr) = do { h <- openFile path ReadMode; parser funct (cnt,Just h) othr}
parser funct _ _ = error "Too much arguments"
toLines :: Handle -> IO [String]
toLines h = do isEOF <- hIsEOF h
if isEOF then return []
else do str <- hGetLine h
strings <- toLines h
return(str:strings)
take_ :: Int -> Handle -> IO [String]
take_ 0 h = return []
take_ n h |n < 0 = error "wrong number of strings"
|otherwise = do eofflag <- hIsEOF h
if eofflag then return []
else do str <- hGetLine h
strs <- take_ (n-1) h
return (str : strs)