È possibile scrivere script di shell in Haskell e, in caso affermativo, come si fa? Semplicemente cambiando l'interprete in questo modo?È possibile utilizzare Haskell per scrivere script di shell?
#!/bin/ghci
È possibile scrivere script di shell in Haskell e, in caso affermativo, come si fa? Semplicemente cambiando l'interprete in questo modo?È possibile utilizzare Haskell per scrivere script di shell?
#!/bin/ghci
Utilizzando ghci
sarà solo caricare il modulo in GHCi. Per eseguirlo come uno script, utilizzare runhaskell
o runghc
:
#!/usr/bin/env runhaskell
main = putStrLn "Hello World!"
Dovrebbe funzionare se si cambia l'interprete a questo:
#!/usr/bin/runhaskell
Invece di codificare il percorso, in generale è meglio usare '#!/usr/bin/env runhaskell' come suggerisce @Hammar in modo che' runhaskell' possa essere trovato ovunque nel tuo percorso invece di solo in '/ usr/bin'. Molte persone non installano Haskell a livello di sistema, quindi non puoi fare affidamento sul fatto di trovarlo sempre in quella posizione. – aculich
controllare bene questa presentazione: Practical Haskell: scripting with types
Un altro modo di scrivere script di shell, usando Haskell è quello di generare gli script, come ad esempio con bashkell. Questo è utile se potresti voler eseguire su sistemi in cui non è installato haskell.
A partire da ottobre 2016, c'è una risposta migliore a questa domanda: utilizzare The Haskell Tool Stack script interpreter. Gli script Haskell basati su stack
sono portatili perché scaricano (e memorizzano nella cache) la versione corretta di ghc
e tutte le loro dipendenze del pacchetto.
#!/usr/bin/env stack
-- stack --resolver lts-3.2 --install-ghc runghc
main = putStrLn "Hello World!"
Vedere anche il tutorial How to Script with Stack.
Probabilmente '#!/Usr/bin/gchci' o' #!/Usr/bin/env ghci' - ma poi è uno script Haskell, non uno shell. –
Guarda questa domanda. Dovrebbe darti molte informazioni. "Clojure o Haskell sono migliori per creare strumenti da riga di comando?" http://stackoverflow.com/questions/4997003 –