I'am próbuje skompilować bardzo mały kod Haskell z GHC:Dlaczego nie mogę skompilować się z GHC, jeśli kod zawiera definicję modułu?
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
Polecenie używam skompilować to:
ghc --make Comma.hs
i jestem coraz to odpowiedź:
[1 z 1] Kompilacja przecinek (Comma.hs, Comma.o)
Żaden plik nie jest generowany i nie ma komunikatów ostrzegawczych lub komunikatów o błędach.
Jeśli komentarz linię "moduł Przecinek gdzie" z kodu kompiluje poprawnie:
[1 1] Kompilacja Main (Comma.hs, Comma.o) Łączenie Przecinek ...
Nie rozumiem, co się dzieje. Używam ghc 7,4,1 (kompilator Haskella, wersja 7.4.1, etap 2 uruchamiany przez GHC w wersji 7.4.1) i Linux Ubuntu.
Doceniam jeśli ktoś mógłby powiedzieć, dlaczego nie skompilować z definicji modułu
Użyj flagi '-main-is',' ghc -main-is Comma Comma' (nie potrzebujesz '--make' z ghc od wersji 7.0). –
Na marginesie twój program jest równoważny z tym: 'main = interact $ intercalate", ". linie " – chirlu