Haskell:Int to Char

MrD*_*MrD 5 haskell

我正在使用该函数fromEnum将字符转换为其对应的ASCII Int.例如:

fromEnum 'A'
Run Code Online (Sandbox Code Playgroud)

返回65.

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

(fromEnum 'A')+1
Run Code Online (Sandbox Code Playgroud)

然后想将返回值(66)转换为"B"的Char.这样做的最佳方法是什么?

谢谢!

bhe*_*ilr 5

您可以使用succ来实现您想要的行为:

nextLetter :: Char -> Char
nextLetter c
    | c == 'Z' = 'A'
    | otherwise = succ c
Run Code Online (Sandbox Code Playgroud)


d12*_*ted 5

您可以使用ord :: Char -> Intchr :: 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 -> InttoEnum :: 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的解决方案已经足够了:)我只是想向您展示解决问题的几种方法.

  • 更一般问题`ord`和`chr`的惯用方法。我认为指出这一点是个好主意。但是,对于这个特定问题,@bheklilrs 解决方案显然更短。 (2认同)