我在Haskell中遇到ASCII问题。
fromEnum :: Char -> Int
toEnum :: Int -> Char
offset :: Int
offset = fromEnum 'A' - fromEnum 'a'
toUpper :: Char -> Char
toUpper ch = toEnum (fromEnum ch + offset)
此脚本出错:
The type signature 'fromEnum' lacks an accompanying binding
The type signature must be given where 'fromEnum is declared
The type signature 'toEnum' lacks an accompanying binding
The type signature must be given where 'toEnum is declared
答案 0 :(得分:3)
fromEnum
和toEnum
是标准函数请试试这个:
offset :: Int
offset = fromEnum 'A' - fromEnum 'a'
toUpper :: Char -> Char
toUpper ch = toEnum (fromEnum ch + offset)
答案 1 :(得分:3)
除非您将此作为练习,否则您应该使用模块toUpper
中的Data.Char
。
做得好这需要检查在Unicode中如何定义大写字母 - 我更依赖于标准库:)
另外,请注意,因为toUpper
不是幂等的:例如,人们可能期望toUpper 'A' == 'A'
。