2013年10月29日火曜日

開発環境

C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、谷口 功 (翻訳)、オライリー・ジャパン)のⅡ部(単純なプログラミング)の9章(変数スコープおよび関数)、9.4(構造かプログラミング)、9.5(再帰)、9.7(プログラミング実習)、実習 9-5をHaskellで解いてみる。

その他参考書籍

9-5.

コード(BBEdit)

Sample.hs

{-# OPTIONS -Wall -Werror #-}

main :: IO ()
main = do
    putStrLn "数値を入力"
    ns <- readNumbers []
    if ns == [] then
        return ()
    else
        do mapM_ putStrLn $ ["最大値: " ++ (show . myMaximum $ ns), 
                             "正解(maximumを利用): " ++ (show . maximum $ ns)]
                             
           main

readNumbers :: [Int] -> IO [Int]
readNumbers ns = do
    line <- getLine
    if line == "" then
        return ns
    else
        readNumbers $ (read line :: Int):ns

myMaximum :: (Ord a) => [a] -> a
myMaximum = foldr1 max

入出力結果(Terminal, runghc)

$ runghc Sample.hs
数値を入力
1
0
2
9
3
8
4
7
5
6

最大値: 9
正解(maximumを利用): 9
数値を入力
1
2
3
4
5
100
6
7
8
9
10

最大値: 100
正解(maximumを利用): 100
数値を入力
100
100
100
100
100

最大値: 100
正解(maximumを利用): 100
数値を入力

$

0 コメント:

コメントを投稿