• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Кто знаком с Haskell?

  • Автор темы katerina99
  • Дата начала
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)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!