0

HASKELL で siguienteLetra という名前の関数を作成する必要があります。この変数はアルファベットの文字であり、次の文字を返します。どうやってやるの?

例: siguienteLetra 'a' と関数が返す me 'b' または siguienteLetra 'c' と関数が返す me 'd'

4

2 に答える 2

2

ヒント1

の次の 2 つの関数Data.Charが役立ちます。

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

最初のものは文字をその数値表現に変換します (例: 'a' → 97, 'b' → 98)。他方は逆の変換を行います (97 → 'a', 98 → 'b')。これらの関数を合理的な方法で使用すると、 を実装できますsiguienteLetra

ヒント2

と 以外に 3 番目の関数が必要になりますが、ordそれchrは何をすべきでしょうか? この 3 番目の関数は にありますが、その名前を推測するのは難しい場合があります (バックグラウンドによって異なりますPrelude) 幸いなことに、関数は非常に単純で、自分で簡単に記述できます。

ヒント3

の署名はsiguienteLetra何ですか? ord3 つの関数 ( 、および 3 番目の関数) のシグネチャを見て、chrそれらを組み合わせる順序を考えてください。

于 2013-01-04T16:09:20.443 に答える
0

ボロ、助けてくれてありがとう、それが結果だ。

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 に答える