This module diverges slightly from Haskell 98, which has isAlpha c = isUpper c || isLower c I'd also suggest using the H98 definitions of isDigit and isControl, even though glibc does the same thing.