2012-11-08 10 views
17

Khi sử dụng GHCi, tôi muốn biết làm cách nào tôi có thể sử dụng tùy chọn -Wall khi (nạp lại) từ lời nhắc.Cảnh báo khi tải từ lời nhắc GHCi

Ví dụ trong phần 3.3 của Haskell Programming Tips Ví dụ hiển thị với bảo vệ là như sau:

-- Bad implementation: 
fac :: Integer -> Integer 
fac n | n == 0 = 1 
     | n /= 0 = n * fac (n-1) 

-- Slightly improved implementation: 
fac :: Integer -> Integer 
fac n | n == 0 = 1 
     | otherwise = n * fac (n-1) 

Nó nói "Vấn đề đầu tiên là nó gần như không thể cho trình biên dịch để kiểm tra xem nhân viên như thế này là đầy đủ , vì các điều kiện bảo vệ có thể phức tạp tùy ý (GHC sẽ cảnh báo bạn nếu bạn sử dụng tùy chọn -Wall). "

Tôi biết tôi có thể nhập ghci -Wall some_file.hs từ dòng lệnh nhưng một lần trong lời nhắc tôi không chắc chắn cách kiểm tra cảnh báo nếu tôi muốn tải lại.

Tôi dường như không thể tìm thấy câu trả lời sau khi thử với Google này!

Cảm ơn trước!

+2

Bạn có thể đặt nó vào file '.ghci' của bạn cho thuận tiện. Tôi có ': set -Wall \ n: set -fno-warn-type-defaults \ n: đặt -fno-warn-unused-do-bind' để bật tất cả trừ các cảnh báo gây phiền nhiễu. –

+0

Nếu bạn đặt '-Wall' lần đầu tiên, tôi nghĩ rằng nó sẽ ở lại thiết lập cho bất kỳ tải lại, quá ... –

Trả lời

22

Trong ghci, nhập

:set -Wall 

và nếu bạn muốn chuyển tất cả các cảnh báo tắt, bạn có thể làm

:set -w 

(Lưu ý chữ thường w. Viết hoa sẽ được lần lượt cảnh báo bình thường trên.)

Trong the user guide, chúng tôi có thể sử dụng bất kỳ tùy chọn dòng lệnh ghc nào tại dấu nhắc lệnh miễn là chúng được liệt kê dưới dạng động và chúng tôi có thể thấy từ the flag reference rằng tất cả các cài đặt cảnh báo đều là động.

Dưới đây là một phiên Ví dụ, bằng cách sử dụng "thực hiện xấu" ở trên:

Prelude> :l temp.hs 
[1 of 1] Compiling Main    (temp.hs, interpreted) 
Ok, modules loaded: Main. 
(0.11 secs, 6443184 bytes) 

*Main> :set -Wall 

*Main> :l temp.hs 
[1 of 1] Compiling Main    (temp.hs, interpreted) 

temp.hs:3:1: 
    Warning: Pattern match(es) are non-exhaustive 
      In an equation for `fac': Patterns not matched: _ 

Ok, modules loaded: Main. 
(0.14 secs, 6442800 bytes)