我正在使用该函数fromEnum将字符转换为其对应的ASCII Int.例如:
fromEnum 'A'
Run Code Online (Sandbox Code Playgroud)
返回65.
现在,假设我有一个功能:
(fromEnum 'A')+1
Run Code Online (Sandbox Code Playgroud)
然后想将返回值(66)转换为"B"的Char.这样做的最佳方法是什么?
谢谢!
您可以使用succ来实现您想要的行为:
nextLetter :: Char -> Char
nextLetter c
| c == 'Z' = 'A'
| otherwise = succ c
Run Code Online (Sandbox Code Playgroud)
您可以使用ord :: Char -> Int和chr :: Int -> Char功能Data.Char.
> chr (ord 'a' + 1)
'b'
Run Code Online (Sandbox Code Playgroud)
但是不要忘记import Data.Char在源文件或:m +Data.Charghci中.
同样的事情:fromEnum :: Enum a => a -> Int和toEnum :: Enum a => Int -> a:
toEnum (fromEnum 'a' + 1) :: Char
Run Code Online (Sandbox Code Playgroud)
这个表达式的最后一部分说haskell我们期望什么类型帮助类型系统推断正确的类型.但在这种情况下,我们可以放弃:: Char:
isLower $ toEnum (fromEnum 'a' + 1)
Run Code Online (Sandbox Code Playgroud)
因为isLower有类型Char -> Bool.因此,期待toEnum (fromEnum 'a' + 1)为Char.
无论如何,bheklilr的解决方案已经足够了:)我只是想向您展示解决问题的几种方法.