Real World Haskell
実戦で学ぶ関数型言語プログラミング
Bryan O'Sullivan, John Goerzen, Don Stewart(著)
山下 伸夫, 伊東 勝利
株式会社タイムインターメディア(翻訳)
開発環境
- OS X Lion - Apple(OS)
- BBEdit - Bare Bones Software, Inc.(Text Editor)
- プログラミング言語: Haskell (純粋関数型)
Real World Haskell』(Bryan O'Sullivan、John Goerzen、Don 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 コメント:
コメントを投稿