0

我必须在 HASKELL 中编写一个名为 siguienteLetra 的函数,该函数接受一个变量,该变量是一个字母并返回下一个字母。我怎样才能做到这一点?

示例: siguienteLetra 'a' 和函数返回 me 'b' 或 siguienteLetra 'c' 并且函数返回 me 'd'

4

2 回答 2

2

提示 1

这两个函数Data.Char将很有帮助:

ord :: Char -> Int
chr :: Int -> Char

第一个将字符转换为其数字表示(例如,'a' → 97,'b' → 98),而另一个进行反向转换(97 → 'a',98 → 'b')。以合理的方式使用这些功能将使您能够实现siguienteLetra.

提示 2

ord除了and之外,您将需要第三个函数,chr它应该做什么?第三个函数在 中Prelude,但可能很难猜出它的名字(取决于你的背景)。幸运的是,该函数非常简单,您将轻松编写它。

提示 3

签名应该是什么siguienteLetra?查看您的三个函数( 和第三个函数)的签名,ordchr考虑它们应该组合的顺序。

于 2013-01-04T16:09:20.443 回答
0

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
于 2013-01-11T16:28:04.893 回答