開発環境
- OS X Mavericks - Apple(OS)
- BBEdit - Bare Bones Software, Inc., Emacs (Text Editor)
- Haskell (純粋関数型プログラミング言語)
- GHC (The Glasgow Haskell Compiler) (処理系)
- The Haskell Platform (インストール方法、モジュール等)
C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、谷口 功 (翻訳)、オライリー・ジャパン)のⅡ部(単純なプログラミング)の9章(変数スコープおよび関数)、9.4(構造かプログラミング)、9.5(再帰)、9.7(プログラミング実習)、実習 9-3をHaskellで解いてみる。
その他参考書籍
- プログラミングHaskell (オーム社) Graham Hutton(著) 山本 和彦(翻訳)
- Real World Haskell―実戦で学ぶ関数型言語プログラミング (オライリージャパン) Bryan O'Sullivan John Goerzen Don Stewart(著) 山下 伸夫 伊東 勝利 株式会社タイムインターメディア(翻訳)
9-3.
コード(BBEdit)
Sample.hs
{-# OPTIONS -Wall -Werror #-} main :: IO () main = do let numbers1 = [] numbers2 = [1] numbers3 = [1, 2, 1, 3, 4, 5] numbers4 = [1, 2, 3, 4, 5] ++ [2] numbers5 = [1..6] mapM_ putStrLn $ map (\(x, y) -> show x ++ ' ':show y ++ ' ':(show $ count y x) ++ "個") $ concat $ map (\x -> map (\y -> (x, y)) [0..5]) [numbers1, numbers2, numbers3, numbers4, numbers5] count :: Int -> [Int] -> Int count a = foldr (\x acc -> if x == a then acc + 1 else acc) 0
入出力結果(Terminal, runghc)
$ runghc Sample.hs [] 0 0個 [] 1 0個 [] 2 0個 [] 3 0個 [] 4 0個 [] 5 0個 [1] 0 0個 [1] 1 1個 [1] 2 0個 [1] 3 0個 [1] 4 0個 [1] 5 0個 [1,2,1,3,4,5] 0 0個 [1,2,1,3,4,5] 1 2個 [1,2,1,3,4,5] 2 1個 [1,2,1,3,4,5] 3 1個 [1,2,1,3,4,5] 4 1個 [1,2,1,3,4,5] 5 1個 [1,2,3,4,5,2] 0 0個 [1,2,3,4,5,2] 1 1個 [1,2,3,4,5,2] 2 2個 [1,2,3,4,5,2] 3 1個 [1,2,3,4,5,2] 4 1個 [1,2,3,4,5,2] 5 1個 [1,2,3,4,5,6] 0 0個 [1,2,3,4,5,6] 1 1個 [1,2,3,4,5,6] 2 1個 [1,2,3,4,5,6] 3 1個 [1,2,3,4,5,6] 4 1個 [1,2,3,4,5,6] 5 1個 $
0 コメント:
コメントを投稿