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)の4章(関数プログラミング)の4.5(リストを使う)の練習問題1.を解いてみる。
1.
コード(BBEdit)
Sample.hs
-- file: Sample.hs safeHead :: [a] -> Maybe a safeHead [] = Nothing safeHead xs = Just (head xs) safeTail :: [a] -> Maybe [a] safeTail [] = Nothing safeTail xs = Just (tail xs) safeLast :: [a] -> Maybe a safeLast [] = Nothing safeLast xs = Just (last xs) safeInit :: [a] -> Maybe [a] safeInit [] = Nothing safeInit xs = Just (init xs) a = [] b = [1,2,3,4,5] c = "haskell"
入出力結果(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> head a *** Exception: Prelude.head: empty list *Main> head b 1 *Main> head c 'h' *Main> safeHead a Nothing *Main> safeHead b Just 1 *Main> safeHead c Just 'h' *Main> tail a *** Exception: Prelude.tail: empty list *Main> tail b [2,3,4,5] *Main> tail c "askell" *Main> safeTail a Nothing *Main> safeTail b Just [2,3,4,5] *Main> safeTail c Just "askell" *Main> last a *** Exception: Prelude.last: empty list *Main> last b 5 *Main> last c 'l' *Main> safeLast a Nothing *Main> safeLast b Just 5 *Main> safeLast c Just 'l' *Main> init a *** Exception: Prelude.init: empty list *Main> init b [1,2,3,4] *Main> init c "haskel" *Main> safeInit a Nothing *Main> safeInit b Just [1,2,3,4] *Main> safeInit c Just "haskel" *Main> :quit Leaving GHCi. $
0 コメント:
コメントを投稿