Haskell:Int to Char

时间:2013-12-18 13:42:33

标签: haskell

我使用函数fromEnum将字符转换为相应的ASCII Int。例如:

fromEnum 'A'

返回65。

现在,假设我有一个功能:

(fromEnum 'A')+1

然后想将返回值(66)转换为“B”的Char。这样做的最佳方式是什么?

谢谢!

2 个答案:

答案 0 :(得分:5)

您可以使用ord :: Char -> Int中的chr :: Int -> CharData.Char个功能。

> chr (ord 'a' + 1)
'b'

但请不要忘记源文件中的import Data.Char或ghci中的:m +Data.Char

fromEnum :: Enum a => a -> InttoEnum :: Enum a => Int -> a相同:

toEnum (fromEnum 'a' + 1) :: Char

这个表达式的最后一部分说haskell我们期望什么类型帮助类型系统推断正确的类型。但在这种情况下,我们可以删除:: Char

isLower $ toEnum  (fromEnum 'a' + 1)

因为isLower的类型为Char -> Bool。因此,期待toEnum (fromEnum 'a' + 1)Char

无论如何, bheklilr 的解决方案已经足够了:)我只是想向您展示解决问题的几种方法。

答案 1 :(得分:4)

您可以使用succ来实现所需的行为:

nextLetter :: Char -> Char
nextLetter c
    | c == 'Z' = 'A'
    | otherwise = succ c