2013-03-18 16 views
7

Sto appena iniziando ad imparare Haskell e ho difficoltà a capire il "flusso" di un programma Haskell.Come caricare uno script in ghci?

Per esempio in Python, posso scrivere uno script, caricarlo per l'interprete e vedere i risultati:

def cube(x): 
    return x*x*x 

print cube(1) 
print cube(2) 
print cube(cube(5)) 
# etc... 

In Haskell posso fare questo:

cube x = x*x*x 
main = print (cube 5) 

caricarlo con runhaskell e stamperà 125.
O potrei usare ghci e digitare manualmente tutte le funzioni che voglio testare

Ma quello che voglio è quello di utilizzare il mio editor di testo, scrivere un paio di funzioni, alcune prove, e hanno Haskell stampa indietro alcuni risultati:

-- Compile this part 
cube x = x*x*x 

-- evaluate this part: 
cube 1 
cube 2 
cube (cube 3) 
--etc.. 

È possibile qualcosa del genere?

risposta

7
cube x = x*x*x 

main = do 
    print $ cube 1 
    print $ cube 2 
    print $ cube (cube 3) 
$ ghci cube.hs 
... 
ghci> main 

Vedere le GHCI user guide.


Inoltre, consiglio vivamente di verificare la libreria QuickCheck.

Sarai stupito di quanto possano essere impressionanti i test.

+5

È anche possibile utilizzare: l (o: carico) se il ghci è già in esecuzione, che il mio solito. –

+0

Funziona grazie :) è necessario controllare cosa fanno quei $ '! btw: è possibile caricare e valutare main dalla riga di comando? ex: ghci cube: esegui main! – andsoa

+1

@andsoa [this] (http://www.haskell.org/hoogle/?hoogle=%24) ti farà risparmiare alcuni minuti di ricerca su google :) – ulidtko

14

Molto possibile!

$ ghci 
> :l filename.hs 

Questo caricherà il file, quindi sarà possibile utilizzare direttamente le funzioni.

> :r 

Ciò causerà il ricaricamento del file dopo aver effettuato una modifica. Non c'è bisogno di menzionare il file, verrà ricaricato qualunque fosse l'ultimo caricato. Questo funzionerà anche se inizialmente si utilizza ghci filename.hs anziché :l.