Чтение аргументов командной строки

Haskell:
Чтение аргументов командной строки

Как это сделать:

import System.Environment (getArgs)

main :: IO ()
main = do
  args <- getArgs
  putStrLn ("Привет, " ++ show args ++ "!")

Запустите, передав “world” в качестве аргумента:

$ runhaskell yourprogram.hs world
Привет, ["world"]!

Погружение

Haskell - аккуратный язык, уходящий корнями в 80-е, предпочитающий чистоту и статическую типизацию. Уже с давних времен в нем были способы обработки аргументов командной строки. В других языках это могло бы быть довольно процедурным делом, но здесь мы имеем дело с монадами IO для взаимодействия с внешним миром.

Альтернативы? Можно поиграться с библиотеками вроде optparse-applicative для сложных случаев, но для простых случаев getArgs справляется с задачей.

Что под капотом? getArgs — это функция, которая погружается в вашу систему, извлекает все, что следует за именем программы в терминале, и предоставляет вам список строк. Это реализовано в базовой библиотеке Haskell, опираясь на функции на уровне C для выполнения основной работы. Круто, правда?

Смотрите также