How to return the next letter in the alphabet of given letter wrapped around in Haskell [closed]

浪子不回头ぞ 提交于 2019-12-08 05:22:45

问题


I'm trying to implement a function that returns the next letter in alphabetical order. For example:

> returnNext 'A'
  'B'

But also:

> returnNext 'Z'
  'A'

The function should thus cycle between char codes in alphabetical order (mod 26).


回答1:


Two ways come to mind

import Data.Char
returnNext c = chr (((1 + ord c - ord 'A') `mod` 26) + ord 'A')

Which is kind of ugly to say the least.

And:

returnNext 'Z' = 'A'
returnNext c = chr (ord c + 1)

Both behave differently when not given a letter of the alphabet, but since you didn't specify what should happen in this case I'll assume it's OK.



来源:https://stackoverflow.com/questions/20746646/how-to-return-the-next-letter-in-the-alphabet-of-given-letter-wrapped-around-in

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!