Haskell:
Lettura degli argomenti della riga di comando
Come Fare:
Con Haskell, utilizziamo il modulo System.Environment
per afferrare questi argomenti. Ecco un esempio semplice:
import System.Environment (getArgs)
main :: IO ()
main = do
args <- getArgs
print args
Se esegui questo programma così runhaskell myprogram.hs arg1 arg2
, otterrai:
["arg1", "arg2"]
Per un uso pratico, guardiamo un esempio dove sommiamo numeri passati come argomenti:
import System.Environment (getArgs)
import Text.Read (readMaybe)
main :: IO ()
main = do
args <- getArgs
let nums = mapM readMaybe args :: Maybe [Int]
case nums of
Just numbers -> print $ sum numbers
Nothing -> putStrLn "Per favore, inserisci solo numeri."
Se lanci runhaskell sum.hs 1 2 3
, otterrai 6
.
Approfondimento:
Haskell legge gli argomenti da riga di comando tramite il modulo System.Environment
. Vecchie versioni di Haskell avevano approcci diversi, ma questo è diventato lo standard.
Esistono alternative:
getArgs
restituisce una lista di stringhe. Per qualcosa di più robusto, si usaoptparse-applicative
oGetOpt
.- Per applicazioni complesse,
optparse-applicative
fornisce un’interfaccia tipo DSL per definire le opzioni.
La gestione degli argomenti in Haskell è puramente funzionale ed è una pratica comune in applicazioni come script e tool CLI.
Vedi Anche:
- Documentazione di Haskell
System.Environment
: https://hackage.haskell.org/package/base/docs/System-Environment.html - Documentazione di “optparse-applicative”: https://hackage.haskell.org/package/optparse-applicative
- Haskell Wiki per l’analisi degli argomenti da riga di comando: https://wiki.haskell.org/Command_line_option_parsers