2014-10-17 13 views

risposta

24

penso ho capito from here

$ ghc -e "interact (unlines.map reverse.lines)" 
hello 
olleh 

UPDATE:

appena fatto qualche test, questo funziona anche:

echo "hi" | ghc -e "interact (unlines.map reverse.lines)" 
// prints "ih" 
11

Considerare runhaskell comando che può richiedere stdin in filodiffusione, per esempio questo,

echo 'main = print "Hello World"' | runhaskell 

Aggiornamento

In generale si può sorgente dello script Haskell come segue,

#!/usr/bin/env runhaskell 

main = putStrLn "Hello World" 

Questo compila realtà ed esegue il programma, mentre ghc -e sarà valutare un'espressione.

+0

Ho appena provato questo e sembra funzionare super hella lento rispetto a 'ghc -e', mi chiedo perché sia? 'main = print" Ciao "| runhaskell' ha preso '1.371s' quando l'ho confrontato con' time', rispetto a 'ghc -e '" Hello "" ha preso '.207s' –

+0

usando ghc -e carica anche .ghci config ma runhaskell no. – Shanthakumar

+0

@JoeCrawfordy true, nota aggiornamento ... – elm

9

Hai trovato ghc -e tu stesso. Qui ci sono alcuni alias utili che vanno bene con che:

function hmap { ghc -e "interact ($*)"; } 
function hmapl { hmap "unlines.($*).lines" ; } 
function hmapw { hmapl "map (unwords.($*).words)" ; } 

(citati in questo old blog post mio.)

2

ho scritto eddie (https://eddie.googlecode.com/) per fornire più servizi di "-e". Dalla pagina collegata:

Eddie aggiunge caratteristiche per rendere utilizzarlo per scripting di shell più facile:

Quando dato argomenti di file, eddie li nutre per la vostra funzione. Eddie può facilmente aggiungere moduli allo spazio dei nomi che si usa. Eddie ha opzioni per elaborare una riga o un file alla volta. Eddie utilizzerà i metodi IO del file binario quando richiesto.

Attenzione, eddie è stata la mia prima "vera" applicazione haskell e ha seriamente bisogno di una riscrittura.

Problemi correlati