I'am cố gắng để biên dịch mã Haskell rất nhỏ với GHC:Tại sao tôi không thể biên dịch với GHC nếu mã chứa định nghĩa mô-đun?
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
Lệnh Tôi đang sử dụng để biên dịch là:
GHC --make Comma.hs
Và tôi nhận được câu trả lời này:
[1 of 1] Biên dịch Comma (Comma.hs, Comma.o)
Không có tệp nào được tạo và không có cảnh báo hoặc thông báo lỗi.
Nếu tôi bình luận là "mô-đun Comma nơi" dòng từ mã nó biên dịch một cách chính xác:
[1 trong tổng số 1] Biên soạn chính (Comma.hs, Comma.o) Linking Comma ...
Tôi không hiểu điều gì đang xảy ra. Tôi đang sử dụng ghc 7,4,1 (Trình biên dịch Glasgow Haskell, Phiên bản 7.4.1, giai đoạn 2 được khởi động bởi phiên bản GHC 7.4.1) và ubuntu linux.
Tôi đánh giá cao nếu có ai có thể nói lý do tại sao không biên dịch với các định nghĩa module
Sử dụng cờ '-main-is',' ghc -main-là Comma Comma' (bạn không cần '--make' với ghc kể từ 7.0). –
Như một sang một bên, chương trình của bạn tương đương với điều này: 'main = interact $ intercalate", ". dòng' – chirlu