2013年12月6日金曜日

開発環境

C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、谷口 功 (翻訳)、オライリー・ジャパン)のⅡ部(単純なプログラミング)の14章(ファイル入出力)、14.1(ファイル関数)、14.2(変換ルーチン)、14.3(バイナリファイルとASCIIファイル)、14.4(行終端にまつわる謎)、14.5(バイナリI/O)、14.6(バッファリングの問題)、14.7(バッファリングを行わないI/O)、14.8(ファイル形式の設計)、14.10(プログラミング実習)、実習 14-6をHaskellで解いてみる。

その他参考書籍

実習14-6.

コード(BBEdit)

Sample.hs

{-# OPTIONS -Wall -Werror #-}
import System.Environment

main :: IO ()
main = do
    (a:b:_) <- getArgs
    contents <- readFile a
    writeFile b $ mailing contents

mailing :: String -> String
mailing s = concat $
    zipWith (\x y -> x ++ ": " ++ y ++ "\n")
            ["zip", "address", "name", "other informations"] $
            tail $ map (takeWhile (' '/=)) $ lines s

入出力結果(Terminal, runghc)

$ runghc Sample.hs sample.txt sample.txt.out
$ cat sample.txt.out
zip: 1234567
address: Japan
name: kamimura
other informations: other
$

慣れるまでは{-# OPTIONS -Wall -Werror #-}の記述を消さずに細かく型を指定していくことに。

0 コメント:

コメントを投稿