2013年2月3日日曜日

開発環境

Real World Haskell』(Bryan O'SullivanJohn GoerzenDon Stewart(著)、山下 伸夫伊東 勝利株式会社タイムインターメディア(翻訳)、オライリー・ジャパン、2009年、ISBN978-4-87311-423-3)の3章(型を定義し、関数を単純化する)の3.13(ガード条件節の評価)の練習問題1、2、3.を解いてみる。

1, 2.

コード(BBEdit)

sample.hs

-- file: sample.hs

count :: [a] -> Int

count (x:xs) = 1 + count xs
count [] = 0

入出力結果(Terminal)

$ ghci
GHCi, version 7.4.2: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> :load sample.hs
[1 of 1] Compiling Main             ( sample.hs, interpreted )
Ok, modules loaded: Main.
*Main> let x = [1,2,3,4,5]
*Main> count x
5
*Main> length x
5
*Main> it == (count x)
True
*Main> let x = "haskell"
*Main> count x
7
*Main> length x
7
*Main> it == (count x)
True
*Main> :type count
count :: [a] -> Int
*Main> :type length
length :: [a] -> Int

3.

コード(BBEdit)

sample.hs

-- file: sample.hs

count :: [a] -> Int

count (x:xs) = 1 + count xs
count [] = 0

average (x:xs) = total (x:xs) / n
    where n = fromIntegral (length (x:xs))
          total (x:xs) = x + total xs
          total [] = 0
average [] = 0

入出力結果(Terminal)

*Main> :load sample.hs
[1 of 1] Compiling Main             ( sample.hs, interpreted )
Ok, modules loaded: Main.
*Main> average []
0.0
*Main> average [1]
1.0
*Main> average [1,2]
1.5
*Main> average [1,2,3,4,5,6,7,8,9,10]
5.5
*Main> :quit
Leaving GHCi.

0 コメント:

コメントを投稿