use*_*936 1 haskell char modulo
我正在尝试实现一个按字母顺序返回下一个字母的函数.例如:
> returnNext 'A'
'B'
Run Code Online (Sandbox Code Playgroud)
但是也:
> returnNext 'Z'
'A'
Run Code Online (Sandbox Code Playgroud)
因此,该函数应按字母顺序(模26)在字符代码之间循环.
想到两种方式
import Data.Char
returnNext c = chr (((1 + ord c - ord 'A') `mod` 26) + ord 'A')
Run Code Online (Sandbox Code Playgroud)
这至少可以说是丑陋的.
和:
returnNext 'Z' = 'A'
returnNext c = chr (ord c + 1)
Run Code Online (Sandbox Code Playgroud)
当没有给出字母表的字母时,两者的行为都不同,但由于你没有说明在这种情况下会发生什么,我会认为它没问题.