Haskell - совпадения шаблонов перекрываются

test :: String -> String -> Int

test' x y n = n
test' "" (y:ys) n = error "error"
test' (x:xs) "" n = error "error"
test' (x:xs) (y:ys) n =
        if      x == y
        then    test'  xs ys n
        else    test'  xs ys (n+1)
test a b = test' a b 0

Когда я компилирую это, я получаю следующий результат:

Warning: Pattern match(es) are overlapped

И ответ всегда «0», что не соответствует моим намерениям. В чем проблема с кодом и как ее исправить?

7
задан Chris Martin 17 January 2016 в 11:42
поделиться