HASKELL で siguienteLetra という名前の関数を作成する必要があります。この変数はアルファベットの文字であり、次の文字を返します。どうやってやるの?
例: siguienteLetra 'a' と関数が返す me 'b' または siguienteLetra 'c' と関数が返す me 'd'
の次の 2 つの関数Data.Char
が役立ちます。
ord :: Char -> Int
chr :: Int -> Char
最初のものは文字をその数値表現に変換します (例: 'a' → 97, 'b' → 98)。他方は逆の変換を行います (97 → 'a', 98 → 'b')。これらの関数を合理的な方法で使用すると、 を実装できますsiguienteLetra
。
と 以外に 3 番目の関数が必要になりますが、ord
それchr
は何をすべきでしょうか? この 3 番目の関数は にありますが、その名前を推測するのは難しい場合があります (バックグラウンドによって異なりますPrelude
) 。幸いなことに、関数は非常に単純で、自分で簡単に記述できます。
の署名はsiguienteLetra
何ですか? ord
3 つの関数 ( 、および 3 番目の関数) のシグネチャを見て、chr
それらを組み合わせる順序を考えてください。
ボロ、助けてくれてありがとう、それが結果だ。
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