計算機科学のブログ

HaskellのI/O - バイナリデータの操作 - JPEGのグリッチング

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

コード

glitcher.hs

import System.Environment ( getArgs )
import qualified Data.ByteString.Char8 as BC
main :: IO ()
main = do
    args <- getArgs
    let fileName = head args
    imageFile <- BC.readFile fileName
    let glitched = imageFile
    let glitchedFileName = mconcat ["glitched_", fileName]
    BC.writeFile glitchedFileName glitched
    print "al done"

入出力結果(Terminal, Zsh)

% runghc glitcher.hs H._P._Lovecraft,_June_1934.jpg
"al done"
%