2012-01-24 23 views
5

tengo el siguiente código:patrón de superposición coincide

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

Cuando cargo en GHCi (7.0.3), me sale:

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

Es esto un error o me estoy perdiendo algo ¿aquí?

El siguiente bodega:

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

ACTUALIZACIÓN:

estoy usando {-# LANGUAGE OverloadedStrings #-}.

Respuesta

9

Esto es GHC bug #5117, que surge del uso de la extensión OverloadedStrings. Debería arreglarse en GHC 7.2.

Como solución alternativa, puede desactivar OverloadedStrings para el módulo con {-# LANGUAGE NoOverloadedStrings #-}, o desactivar la advertencia con {-# OPTIONS_GHC -fno-warn-overlapping-patterns #-}. O simplemente ignórelo :)

3

¿Ha activado OverloadedStrings? Si mal no recuerdo, eso causa advertencias sobre patrones "superpuestos" espurios, porque en ese caso no está claro que, p. "g" y "global" son mutuamente excluyentes.

Cuestiones relacionadas