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
và 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?
Đ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