2014-12-25 6 views
5

Non riesco a capire come ottenere WinGHCi per caricare e compilare il mio file .hs.Ottenere i file di origine per l'esecuzione in Haskell Programming (WinGHCi)

Ho un file, C:\Users\Haskell\Source\hello.hs, che solo contiene la seguente riga:

main = putStrLn "Hello, world!" 

Se, al prompt dei Prelude>, corro

:cd C:\Users\Haskell\Source\ 

non succede nulla, che sto assumendo mezzi il comando ha avuto successo. Tuttavia, quando si tenta di eseguire

:load hello.hs 

ottengo "[1 di 1] Compilazione principale Ok, moduli caricati:. Main" il messaggio. La mia pronta poi cambia da "Preludio" a "* Main" e io tipo:

ghc -o hello hello.hs 

Dopo di che, mi metterò una serie di errori a parlare di come GHC, o, ciao, ciao, e hs "non sono in ambito. "

Sono nella directory corretta. Perché il mio programma non funzionerà?

Uno dei miei problemi è che non riesco a navigare nelle directory. So che :!dir elenca i file e io sono nella directory giusta, ma :load hello.hs continua a non funzionare e continuo a ricevere l'errore dell'ambito.

Qualsiasi aiuto sarebbe apprezzato.

MODIFICA: un utente ha sottolineato che se ho ottenuto il prompt * Main, il mio programma è stato caricato e compilato e non è necessario eseguire il comando ghc. Se questo è il caso, come lo eseguirò? Haskell.org afferma che, "È quindi possibile eseguire l'eseguibile (./hello su sistemi Unix, hello.exe su Windows)", ma un exe non è stato creato.

+1

Immagino che GHCi abbia caricato correttamente il file sorgente ed emesso un errore perché c'è un errore nel file sorgente. Sarebbe utile se tu pubblicassi hello.hs. – snak

+0

I contenuti di hello.hs sono, main = putStrLn "Hello, world!" –

+1

@JoffreyBaratheon Ho aggiunto le informazioni del tuo ultimo commento alla tua domanda. In futuro, fai clic su "modifica" sotto la tua domanda per modificare la tua domanda e aggiungere tali informazioni tu stesso. Avrai una migliore possibilità di ottenere una buona risposta se le tue domande sono autonome. – Jubobs

risposta

4

Trovo più facile per prima cosa navigare nella directory quindi richiamare ghci. Una volta in Preludio puoi usare :l e il nome del file.

Oppure, è possibile caricare ghci quindi utilizzare :l e utilizzare il percorso completo per il file.

Modifica: Dopo aver letto le modifiche, è chiaro che il codice viene compilato correttamente. Una volta che è stato compilato, non vi è alcun motivo per provare a farlo di nuovo con ghc (non penso che sia possibile farlo da ghci in ogni caso).

Ora che è stato compilato, è possibile utilizzare qualsiasi codice e tipo di dati in esso definiti. Pertanto, per utilizzare la funzione principale, digitare main al prompt *Main>.

+0

Ok, quindi ho fatto quello che hai detto sulla navigazione verso il file sorgente in cmd e poi caricare ghci. Faccio: Prelude>: l hello.hs e poi * Principale> ghc -o ciao ciao.hs E ancora non ottengo il campo di applicazione. –

+0

Quando si passa a "Main", significa che il file è stato caricato e compilato. Quindi non dovrebbe esserci bisogno di provare ed eseguire 'ghc'. Basta usare le funzioni e i tipi di dati definiti nel tuo file. –

+0

Se stai dicendo che è già stato compilato, come potrei fare per eseguirlo? Haskell.org dice, "È quindi possibile eseguire l'eseguibile (./hello su sistemi Unix, hello.exe su Windows)." Se scrivo hello.exe, non funziona. Mi sento davvero stupido in questo momento lol. –

Problemi correlati