計算機科学のブログ

HaskellのI/O - バイナリデータの操作 - ランダムなChar, I/Oアクション

入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)の UNIT4(HaskellのI/O)、LESSON 25(バイナリデータの操作)、25.2(JPEGのグリッチング) クイックチェック 25-3の解答を求めてみる。

コード

sample3.hs

import System.Random
main :: IO ()
main = do
    c1 <- randomChar
    c2 <- randomChar
    c3 <- randomChar 
    c4 <- randomChar
    c5 <- randomChar
    let s = [c1, c2, c3, c4, c5] 
    print [c1, c2, c3, c4, c5]
    putStrLn s

randomChar :: IO Char
randomChar = do
    int <- randomRIO (0, fromEnum (maxBound :: Char) + 1)
    return $ toEnum int

入出力結果(Terminal, Zsh)

% runghc sample3.hs
"\805239\230132\1113668\579973\506859"
󄥷𸋴􏹄򍦅񻯫
% runghc sample3.hs
"\721350\326358\388962\305945\426314"
򰇆񏫖񞽢񊬙񨅊
% runghc sample3.hs
"\994262\802358\67151\375354\818404"
󲯖󃸶𐙏񛨺󇳤
% runghc sample3.hs
"\88656\641332\1059453\979203\569943"
𕩐򜤴􂩽󯄃򋉗c
% runghc sample3.hs
"\232270\1041772\447622\469864\977624"
𸭎󾕬񭒆񲭨󮫘
%