我使用函数fromEnum
将字符转换为相应的ASCII Int。例如:
fromEnum 'A'
返回65。
现在,假设我有一个功能:
(fromEnum 'A')+1
然后想将返回值(66)转换为“B”的Char。这样做的最佳方式是什么?
谢谢!
答案 0 :(得分:5)
您可以使用ord :: Char -> Int
中的chr :: Int -> Char
和Data.Char
个功能。
> chr (ord 'a' + 1)
'b'
但请不要忘记源文件中的import Data.Char
或ghci中的:m +Data.Char
。
与fromEnum :: Enum a => a -> Int
和toEnum :: 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