关于"错误的类型签名没有绑定"

时间:2014-12-25 18:20:50

标签: haskell

我在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

2 个答案:

答案 0 :(得分:3)

fromEnumtoEnum是标准函数请试试这个:

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'