2008年04月21日

[Haskell] 月の日数を求める

   このエントリーをはてなブックマークに追加 Clip to Evernote
指定した月の日数を求める関数を作れ。
ただし、うるう年は考慮しなくてもよい。

やりたいことは実に単純なんだけど、リストのn番目を求めるのってどうやるんだろうか?
調べたら !! 演算子があるということがわかった。

なるほど、それならば、

daysOfMonth :: Int -> Int
daysOfMonth n = days !! (n-1)

days :: [Int]
days = [31, 28, 31, 30, 31, 30, 31,31, 30, 31, 30, 31]

でOKかな。

自分で、!! 演算子と同じことをやる関数を作るとするとどうやるのかも考えてみた。

valueAt :: Int -> [Int] -> Int
valueAt n (x:xs)
| n == 0 = x
| otherwise = valueAt (n-1) xs

とこんな感じか。
随分とHaskellの再帰処理にも慣れてきたようだ。

ところで、今気がついたんだけど、Haskellで例外処理って
どう書くのかな?
これこは、明日以降の課題ですね。


 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/51486703