開発環境
- OS X Mavericks - Apple(OS)
- BBEdit - Bare Bones Software, Inc., Emacs (Text Editor)
- Haskell (純粋関数型プログラミング言語)
- GHC (The Glasgow Haskell Compiler) (処理系)
- The Haskell Platform (インストール方法、モジュール等)
初めてのコンピュータサイエンス(Jennifer Campbell、Paul Gries、Jason Montojo、Greg Wilson(著)長尾 高弘(翻訳))の15章(データベース)、15.11(練習問題)、2-a.をHaskellで解いてみる。
その他参考書籍
- プログラミングHaskell (オーム社) Graham Hutton(著) 山本 和彦(翻訳)
- Real World Haskell―実戦で学ぶ関数型言語プログラミング (オライリージャパン) Bryan O'Sullivan John Goerzen Don Stewart(著) 山下 伸夫 伊東 勝利 株式会社タイムインターメディア(翻訳)
15.11(練習問題)、2-a.
コード(BBEdit)
Sample.hs
{-# OPTIONS -Wall -Werror #-} module Main where import Database.HDBC import Database.HDBC.Sqlite3 main :: IO () main = do conn <- connectSqlite3 "census.db" _ <- run conn "DROP TABLE Capitals" [] _ <- run conn ("CREATE TABLE Capitals (State TEXT, City TEXT, " ++ "Population Integer, PRIMARY KEY (State))") [] mapM_ (run conn "INSERT INTO Capitals VALUES(?, ?, ?)") $ map (\(a, b, c) -> [toSql a, toSql b, toSql c]) state commit conn putStrLn "州/準州、州/準州都、人口" r <- quickQuery' conn ("SELECT * FROM Capitals") [] mapM_ putStrLn $ map (\(a:b:c:[]) -> a ++ ", " ++ b ++ ", " ++ c) $ map (\x -> map (\y -> fromSql y :: String) x) r disconnect conn state :: [(String, String, Int)] state = [("ニューファンドランド・ラブラドール州", "セント・ジョンズ", 172918), ("プリンスエドワードアイランド州", "シャーロットタウン", 58358), ("ノバスコシア州", "ハリファックス", 359183), ("ニューブランズウィック州", "フレデリクトン", 81346), ("ケベック州", "ケベック", 682757), ("オンタリオ州", "トロント", 4682897), ("マニトバ州", "ウィニペグ", 671274), ("サスカチュワン州", "レジャイナ", 192800), ("アルバータ州", "エドモントン", 937845), ("ブリティッシュコロンビア州", "ビクトリア", 311902), ("ユーコン準州", "ホワイトホース", 21405), ("ノースウェスト準州", "イエローナイフ", 16541), ("ヌナブト準州", "イカルイト", 5236)]
入出力結果(Terminal, runghc)
$ runghc Sample.hs 州/準州、州/準州都、人口 ニューファンドランド・ラブラドール州, セント・ジョンズ, 172918 プリンスエドワードアイランド州, シャーロットタウン, 58358 ノバスコシア州, ハリファックス, 359183 ニューブランズウィック州, フレデリクトン, 81346 ケベック州, ケベック, 682757 オンタリオ州, トロント, 4682897 マニトバ州, ウィニペグ, 671274 サスカチュワン州, レジャイナ, 192800 アルバータ州, エドモントン, 937845 ブリティッシュコロンビア州, ビクトリア, 311902 ユーコン準州, ホワイトホース, 21405 ノースウェスト準州, イエローナイフ, 16541 ヌナブト準州, イカルイト, 5236 $
慣れるまでは{-# OPTIONS -Wall -Werror #-}の記述を消さずに細かく型を指定していくことに。
0 コメント:
コメントを投稿