2012-01-19 25 views
5

Tôi đã tạo một số tệp từ một dự án trong Unix, chúng rất nhiều và nếu tôi muốn thực thi nó trong một máy tính hoặc thư mục khác, tôi cần sao chép tất cả các tệp vào đó. Tất cả đều được kết nối trong nhập. Tôi có thể tạo chương trình haskell thực thi như thế nào?Biên dịch nhiều tệp .hs của Haskell - Unix

Tôi có mỗi ví dụ:

main.hs - main where all the program executes; using,besides haskell, unix shell. 
ex1.hs - basically types of data, some functions. 
ex2.lhs - same as ex1.lhs but is literate with LaTeX 
pic.jpg - picture to use on the pdflatex 
package.sty - package needed to use some functions 

Làm thế nào để tiến hành và biên dịch tất cả các? tôi đã cố gắng sử dụng GHC nhưng luôn luôn đưa ra các lỗi:

>ghc -o MAIN main.hs ex1.hs ex2.lhs pic.jpg package.sty 

Failed to load interface for 'ex1.hs' Và trong dòng trong đó có ex1.hs nhập khẩu

Tò mò là nếu tôi thương mại ex1.hs nhập khẩu để nhập ex2.lhs dòng sẽ đưa ra lỗi trên ex2

+1

Ý của bạn là _ghc_? –

+1

Bạn muốn một tệp '.jpg'- hoặc' .sty' được biên dịch như thế nào? Nó có nên được nhúng vào tệp thực thi không? – dflemstr

+0

Có tôi cần nó gây ra chương trình tạo ra một pdf và tôi cần jpg và chuồng là một gói – MrFabio

Trả lời

9
  1. Haskell tên mô-đun phải bắt đầu bằng một chữ hoa, vì vậy bắt đầu bằng cách đổi tên ex1.hsex2.hs-Ex1.hsEx2.hs . Họ cũng nên bắt đầu với module Ex1 where, nếu không tên mô-đun sẽ mặc định là Main và GHC sẽ rất bối rối khi tên mô-đun không khớp với tên tệp.

  2. Báo cáo nhập phải đề cập đến tên mô-đun, không phải tên tệp, do đó hãy thay đổi chúng trong main.hs để tương ứng với tên mô-đun.

    import Ex1 
    import Ex2 
    
  3. Bây giờ biên dịch với ghc --make main.hs và tự động tìm các mô-đun khác. Nó sẽ tìm kiếm các mô-đun với cả hai tiện ích mở rộng là .hs.lhs và xử lý chính xác các mô-đun như tệp Haskell theo nghĩa đen.

Đối với các dự án lớn hơn, bạn nên xem xét sử dụng hầu hết các thư viện và chương trình Haskell. Nó sẽ giúp quản lý các phụ thuộc và các tùy chọn trình biên dịch, giống như một Makefile.

+0

Tôi đã có tất cả các quyền với tên, bằng cách sử dụng _ghc - make main.hs_ hoạt động nhưng nó làm cho các tệp .o và hình ảnh không được biên dịch. Sau đó, làm thế nào tôi có thể thực hiện nó? nguyên nhân _./main.o_ hoặc _./main_ sẽ không hoạt động – MrFabio

+0

@GoodGuyGreg: Giả sử trình biên dịch thành công, './main' sẽ hoạt động. Tôi đang bối rối về việc biên soạn một phần hình ảnh. Bạn đang nói về việc biên dịch LaTeX? – hammar

+0

Có, nó biên dịch một pdf trong một chức năng, nhưng nếu không thể biên dịch một jpg tôi có thể loại bỏ nó không có vấn đề, nhưng vấn đề là khi tôi biên dịch tôi làm cho các tập tin .o cho mỗi .hs và .lhs nhập khẩu trong chính. hs và ./main nói rằng nó không tồn tại – MrFabio

3

Hãy thử

ghc --make main.hs

Điều đó sẽ làm cho GHC cố gắng làm tất cả mọi thứ nó có thể ...

Các vấn đề liên quan