2012-01-24 39 views
5

Tôi có đoạn mã sau:mô hình chồng chéo phù hợp

test :: String -> Bool 
test "g" = True 
test "global" = True 
test _ = False 

Khi tôi nạp nó vào GHCi (7.0.3), tôi nhận được:

Warning: Pattern match(es) are overlapped 
     In an equation for `test': test "g" = ... 

Đây có phải là một lỗi hay tôi thiếu một cái gì đó đây?

Các tổ chức sau đây:

test "" == False 
test "g" == True 
test "gl" == False 
test "global" == True 
test "globalx" == False 

UPDATE:

Tôi đang sử dụng {-# LANGUAGE OverloadedStrings #-}.

Trả lời

9

Đây là GHC bug #5117, phát sinh từ việc sử dụng tiện ích mở rộng OverloadedStrings. Nó phải được sửa trong GHC 7.2.

Để giải quyết sự cố này, bạn có thể tắt OverloadedStrings cho mô-đun có {-# LANGUAGE NoOverloadedStrings #-} hoặc tắt cảnh báo với {-# OPTIONS_GHC -fno-warn-overlapping-patterns #-}. Hoặc chỉ cần bỏ qua nó :)

3

Bạn đã bật OverloadedStrings chưa? Nếu tôi nhớ chính xác, điều đó gây ra các cảnh báo chồng chéo 'giả mạo', bởi vì trong trường hợp đó không rõ ràng, ví dụ: "g" và "toàn cầu" loại trừ lẫn nhau.

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