2013-06-15 30 views
8

Real World Haskell nói "Trình biên dịch Haskell có thể cảnh báo chúng tôi nếu chúng tôi giới thiệu tên biến trong mẫu, nhưng không sử dụng nó trong nội dung của hàm".Cảnh báo biến không sử dụng trong mã Haskell

Tôi thường quên sử dụng các biến mà tôi ràng buộc, vì vậy tôi muốn sử dụng tính năng này. Nhưng ghci và ghc của tôi có vẻ ổn với các biến không sử dụng, và tôi thực sự chưa bao giờ thấy điều này kể từ khi tôi bắt đầu học Haskell cách đây vài tháng.

Tôi làm cách nào để sử dụng tính năng này? Hoặc trình biên dịch Haskell không có tính năng này nữa?

Trả lời

9

Như đã nói ở trên, tùy chọn là -fwarn-unused-binds hoặc -Wall cho tất cả các cảnh báo. Một số khác là -Werror để làm cho các cảnh báo ngừng việc biên dịch.

Để sử dụng chúng, bạn chuyển chúng đến ghc hoặc ghci trên dòng lệnh. Thêm vào đó, trong một phiên trong ghci, bạn có thể gõ

:set -fwarn-unused-binds 

Với cabal bạn có thể thêm ghc-options đến phần thực thi. Ví dụ:

executable my-program 
    main-is:  MyProgram.hs 
    hs-source-dirs: src 
    ghc-options: -Wall 

Bây giờ, chạy cabal configure && cabal build (và các lệnh khác) sẽ sử dụng tùy chọn -Wall.

+0

Cảm ơn bạn đã trả lời! – Tengu

5

Bạn có thể thêm cờ -fwarn-unused-binds vào ghc hoặc ghci. Để bật các cảnh báo hữu ích khác, hãy sử dụng -W. Để bật tất cả cảnh báo, hãy sử dụng -Wall. Ví dụ:

ghci -fwarn-unused-binds 
+0

Cảm ơn câu trả lời của bạn. Tôi biết làm thế nào để thêm cờ khi biên dịch với 'ghc' nhưng tôi không biết làm thế nào để làm điều đó với' ghci'. Có lệnh cụ thể nào không? – Tengu

+0

Bắt đầu 'ghci' bằng lệnh như trong ví dụ của tôi. Bạn cũng có thể nhập ví dụ: ': set -fwarn-unused-binds' tại dòng lệnh ghci. – dflemstr

6

Bạn có thể xem Warnings. Tôi thường sử dụng -Wall trong các dự án của tôi cho thấy các biến được gắn kết không được sử dụng cùng với một số cảnh báo hữu ích khác. Có cờ cụ thể (-fwarn-unused-binds) cũng chỉ để thực hiện những gì bạn muốn.

+0

Cảm ơn bạn rất nhiều vì câu trả lời của bạn! – Tengu

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