2013年2月12日火曜日

開発環境

Real World Haskell』(Bryan O'SullivanJohn GoerzenDon 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 コメント:

コメントを投稿