2014-12-25 11 views
5

Tôi có xu hướng đánh máy nhiều lần chương trình của mình trong thiết bị đầu cuối trong khi sửa đổi chúng trong trình soạn thảo của tôi để có được phản hồi theo thời gian thực. Tôi thường chạy một cái gì đó giống như: watch -d -n 1 "ghc -fno-code NoIncompletePM.hs".ghc không báo cáo các kết quả mẫu không đầy đủ khi sử dụng cờ 'no-code`

Thật không may cờ no-code mà tôi sử dụng để tránh biên dịch lại mã tôi không quan tâm nhưng dường như không tương thích với mã warn-incomplete-patterns. Ví dụ. với chương trình này:

{-# OPTIONS -Wall    #-} 
module NoIncompletePM where 

argh :: Bool -> Bool 
argh True = True 

Tôi chưa bao giờ nhận được bất kỳ cảnh báo rằng argh thiếu trường hợp cho False. Có thể nhận được tất cả các cảnh báo này bằng cách xóa cờ no-code thêm force-recomp một (để cảnh báo được hiển thị mỗi lần và không chỉ lần đầu tiên được biên dịch) mà tôi muốn tránh việc biên dịch mã số ...

Tôi không thể tìm thấy bất kỳ điều gì trong sách hướng dẫn mô tả chúng không tương thích nên tôi đoán rằng đó là hành vi không mong muốn hoặc tôi đang làm điều gì đó sai. Bất kì manh mối nào?

+0

Điểm nhỏ nhất: 1) Bỏ phiếu với 'xem' có vẻ tối ưu khi bạn không sửa đổi mã. Bạn có thể viết công cụ của riêng bạn chỉ chạy ghc khi nguồn đã thay đổi: trong trường hợp này bạn sẽ giữ lại các thông điệp cũ, làm cho 'force-recomp' không cần thiết. 2) Emacs Flymake thực hiện chính xác những gì bạn đang cố gắng làm (Tôi không biết cờ nào nó chuyển tới ghc - nó có thể tạo ra mã sau khi tất cả). Tôi khá chắc chắn có các biên tập viên khác cũng như với các tính năng tương tự. 3) 'no-code' ảnh hưởng đến cảnh báo trông thực sự sai, nhưng tôi không thể tái tạo nó. – chi

Trả lời

1

Đây là một tiếng GHC lỗi:

https://ghc.haskell.org/trac/ghc/ticket/8101

Lưu ý rằng nếu bạn vượt qua -c cờ cho chế độ one-shot, sau đó bạn làm nhận được cảnh báo. Vì vậy, đó là một giải pháp cho bây giờ.

Đáng buồn thay, nó xuất hiện (https://ghc.haskell.org/trac/ghc/ticket/10600) rằng ghc 8.0 có thể làm hỏng hoạt động này ngay cả trong chế độ một lần, ít nhất cho một chu kỳ phát hành nữa.

+0

Tôi đã chuyển sang sử dụng 'ghcid' nhưng tôi không hoàn toàn hài lòng với giải pháp này vì vậy tôi rất vui khi biết rằng có một giải pháp thay thế. Cảm ơn! – gallais

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