I'am tenta di compilare un piccolo codice Haskell con GHC:Perché non riesco a compilare con GHC se il codice contiene la definizione del modulo?
module Comma where
import System.IO
main = do
contents <- getContents
putStr (comma contents)
comma input =
let allLines = lines input
addcomma [x] = x
addcomma (x:xs) = x ++ "," ++ (addcomma xs)
result = addcomma allLines
in result
Il comando sto usando per compilare è:
ghc --make Comma.hs
e sto ottenendo questa risposta:
[1 di 1] la compilazione Comma (Comma.hs, Comma.o)
Nessun file è stato generato e non sono presenti messaggi di avviso o errore.
Se io commento la riga "Modulo Comma dove" dal codice si compila correttamente:
[1 di 1] La compilazione principale (Comma.hs, Comma.o) Linking Comma ...
Non capisco cosa sta succedendo. Sto usando ghc 7,4,1 (Glasgow Haskell Compiler, Versione 7.4.1, fase 2 avviata da GHC versione 7.4.1) e ubuntu linux.
mi rendo conto se qualcuno potrebbe dire perché non compilare con la definizione del modulo
Utilizzare il flag '-main-is',' ghc -main-is Comma Comma' (non è necessario '--make' con ghc da 7.0). –
Per inciso, il tuo programma è equivalente a questo: 'main = interact $ intercalate", ". linee' – chirlu