## Saturday, June 25, 2011

### Calculate the firefox year #2

(continued from phosphorescence: Calculate the firefox year)
A rapid pace of growth of IT is often likened to a "dog year". And now, more rapid pace comes! It calls "firefox year".

http://mozilla.jp/firefox/preview/faq/#q-rapid-3
• Firefox 5 was released at 2011-06-21.
• Firefox 6 will be released at 8 weeks after Firefox 5's one.
• Firefox n + 1 will be released at 6 weeks after Firefox n's one.

So I again try to calculate the year when the version equals release year and when the version passes release year, in F#.

## In F#

let firefoxReleaseDate version =
let rec nextFirefoxReleaseDate (nextVersion) (currentDate:System.DateTime) =
match nextVersion with
| nextVersion when nextVersion <= 6 -> currentDate.AddDays(7.0 * 8.0)
| _ -> nextFirefoxReleaseDate (nextVersion - 1) (currentDate.AddDays(7.0 * 6.0))
nextFirefoxReleaseDate version (new System.DateTime(2011, 6, 21))

let calculateFirefoxYear =
let rec incrementFirefoxYear (n:int) =
let date = firefoxReleaseDate(n)
if n < date.Year
then incrementFirefoxYear (n+1)
else (n, date)
incrementFirefoxYear(5)

let result = calculateFirefoxYear
let firefoxYearVersion = fst result
let firefoxYearDate = snd result
System.Console.WriteLine("The version equals release year ({0}) ({1:d})", firefoxYearVersion, firefoxYearDate)
System.Console.WriteLine("The version passes release year ({0}) ({1:d})", firefoxYearVersion+1, firefoxReleaseDate(firefoxYearVersion+1))
The version equals release year (2272) (2272/03/12)
The version passes release year (2273) (2272/04/23)