我必须在 HASKELL 中编写一个名为 siguienteLetra 的函数,该函数接受一个变量,该变量是一个字母并返回下一个字母。我怎样才能做到这一点?
示例: siguienteLetra 'a' 和函数返回 me 'b' 或 siguienteLetra 'c' 并且函数返回 me 'd'
这两个函数Data.Char
将很有帮助:
ord :: Char -> Int
chr :: Int -> Char
第一个将字符转换为其数字表示(例如,'a' → 97,'b' → 98),而另一个进行反向转换(97 → 'a',98 → 'b')。以合理的方式使用这些功能将使您能够实现siguienteLetra
.
ord
除了and之外,您将需要第三个函数,chr
它应该做什么?第三个函数在 中Prelude
,但可能很难猜出它的名字(取决于你的背景)。幸运的是,该函数非常简单,您将轻松编写它。
签名应该是什么siguienteLetra
?查看您的三个函数( 和第三个函数)的签名,ord
并chr
考虑它们应该组合的顺序。
Bolo 感谢您的帮助,这就是结果。
module Ejercicio1 where
import Data.Char
import Data.Ord()
siguienteLetra :: Char -> Char -- you should not put pure computations
-- in the IO Monad!
siguienteLetra y = chr z
where x = ord y
z = x+1
ejercicio1 :: IO ()
ejercicio1 = do
y <- getChar
print $ siguienteLetra y