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 для выполнения основной работы. Круто, правда?
Смотрите также
- Больше о
getArgs
: Hoogle по System.Environment - Углубление в парсинг аргументов: optparse-applicative на Hackage