The test cases “invalid with letters” and “invalid with punctuations” use area codes that begin with 1, which could cause the code under test to reject the phone number without ever checking for letters or punctuation.
That data comes from the problem spec and should ideally remain synced to the problem spec.
Please see Suggesting Exercise Improvements | Exercism's Docs and related docs. If you’d like to change the problem specs, please read the docs and propose a change on the forum for discussion prior to opening a PR.
I did some further digging and it looks like the problem spec was updated to address this problem, but the tests in the Haskell version have not been updated to reflect this change. What’s the correct way to update the Haskell tests to reflect this change?
Some tracks have tooling to sync/update tests. Others require people manually sync the files. I’m not familiar with the Haskell track so I have no idea how it is set up.
I reran the example solution against the updated tests and it passes, so no changes were needed there. As a bonus I’ve now had my first introduction to the >>= operator