練習問題 2.4.3.

日付は整数の3つ組
(d,m,y)
を使って表現されているものとせよ.ただし,
d
は日,
m
は月,
y
は年とする. 2つの日付(1つめは現在の日付,2つめは誰か
P
の生年月日)を引数としてとり,
P
の満年齢を返す関数を定義せよ.



type Date = (Int,Int,Int)

wholeYears :: Date -> Date -> Int
wholeYears (d,m,y) (d',m',y') = y''
  where
    d'' = d - d'
    m'' = m - m' - if d'' < 0 then 1 else 0
    y'' = y - y' - if m'' < 0 then 1 else 0