2012-01-19 14 views
24

È 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 
+4

Probabilmente '#!/Usr/bin/gchci' o' #!/Usr/bin/env ghci' - ma poi è uno script Haskell, non uno shell. –

+3

Guarda questa domanda. Dovrebbe darti molte informazioni. "Clojure o Haskell sono migliori per creare strumenti da riga di comando?" http://stackoverflow.com/questions/4997003 –

risposta

43

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!" 
11

Dovrebbe funzionare se si cambia l'interprete a questo:

#!/usr/bin/runhaskell 
+4

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

3

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.

4

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.

Problemi correlati