計算機科学のブログ

HaskellのI/O バイナリデータの操作 JPEGのグリッチング ランダムなバイトを挿入する System.Randomモジュール、RandomRIO関数、minBound関数、maxBound関数、Char型

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

コード

import System.Random

main :: IO Char
main = do
    c <- randomRIO (minBound :: Char, maxBound :: Char)
    return c

入出力結果(Terminal, Zsh)

% runghc sample03.hs
% ghci
GHCi, version 8.10.5: https://www.haskell.org/ghc/  :? for help
Loaded package environment from /.../.ghc/x86_64-darwin-8.10.5/environments/default
macro 'doc' overwrites builtin command.  Use ':def!' to overwrite.
(0.00 secs, 0 bytes)
(0.00 secs, 0 bytes)
Loaded GHCi configuration from /.../.ghc/ghci.conf
Prelude
λ> :load sample03.hs 
[1 of 1] Compiling Main             ( sample03.hs, interpreted )
Ok, one module loaded.
(0.17 secs,)
*Main
λ> main
'\1091819'
it :: Char
(0.02 secs, 69,400 bytes)
*Main
λ> main
'\28759'
it :: Char
(0.00 secs, 32,528 bytes)
*Main
λ> main
'\1020406'
it :: Char
(0.00 secs, 34,000 bytes)
*Main
λ> main
'\626237'
it :: Char
(0.00 secs, 33,264 bytes)
*Main
λ> main
'\408055'
it :: Char
(0.00 secs, 33,264 bytes)
*Main
λ> :quit
Leaving GHCi.
%