2014年1月2日木曜日

開発環境

C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、谷口 功 (翻訳)、オライリー・ジャパン)のⅢ部(高度なプログラミング概念)の21章(あまり使用しないCの機能)、21.2(goto)、設問21-1.をHaskellで解いてみる。

その他参考書籍

設問21-1.

コード(BBEdit)

Sample.hs

{-# OPTIONS -Wall -Werror #-}
module Main where

import System.IO

main :: IO ()
main = do
    putStrLn "Enter add(a), delete(d), quit(q):"
    line <- getLine
    if line == "q" then do
        putStrLn "Quit"
        return ()
    else do
        (case line of
             "a" -> putStrLn "Add"
             "d" -> putStrLn "Delete"
             _   -> hPutStrLn stderr ("Error:Bad command " ++ line))
        main

入出力結果(Terminal, runghc)

$ runghc Sample.hs
Enter add(a), delete(d), quit(q):
a
Add
Enter add(a), delete(d), quit(q):
d
Delete
Enter add(a), delete(d), quit(q):
b
Error:Bad command b
Enter add(a), delete(d), quit(q):
qbcd
Error:Bad command qbcd
Enter add(a), delete(d), quit(q):
q
Quit
$

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

0 コメント:

コメントを投稿