Monday, July 1, 2013

Calculate the firefox year with using Seq.unfold

(Check also phosphorescence: Calculate the firefox year #2 and phosphorescence: Calculate the firefox year #2 (Fixed))
In this article, rewrite with using Seq.unfold . It becomes quite simple architecture.
open System
let firefoxRollingReleaseDate n =
  let firefox5ReleaseDate = new DateTime(2011, 6, 21)
  let firefox6ReleaseDate = firefox5ReleaseDate.AddDays(7.0 * 8.0)
  let isBetweenDate(targetDate:DateTime, currentDate:DateTime, nextDate:DateTime) =
    match (DateTime.Compare(targetDate, currentDate)>0, DateTime.Compare(targetDate, nextDate)>0) with
    | (true, false) -> true
    | (_, _) -> false
  let firefoxRollingRelease (currentDate:DateTime, nextDate:DateTime) =
    match isBetweenDate(new DateTime(2012, 12, 25), nextDate, nextDate.AddDays(7.0 * 6.0)) with
    | true -> Some(currentDate, (nextDate, nextDate.AddDays(7.0 * 7.0)))
    | _ -> Some(currentDate, (nextDate, nextDate.AddDays(7.0 * 6.0)))
  match n < 5 with
  | true -> failwith "The version was not yet in rolling release."
  | _ -> Seq.nth (n - 5) <| Seq.unfold firefoxRollingRelease (firefox5ReleaseDate, firefox6ReleaseDate)
(continue to phosphorescence: Calculate the firefox year with using Seq.unfold #2)

No comments:

Post a Comment