答案:時間帯重複チェック(Scala)

お題:時間帯重複チェック - No Programming, No LifeScalaで解いてみました。

答案:時間帯重複チェック (Scala による Option モナド活用編) - akihiro4chawonの日記との一番の違いは、classをバンバン定義してimplicit defも使いまくって、難しくしてみたところでしょうかw
あと、for使ってません。foreach, map, flatMap, filter, filterNot only...。
慣れると意外と読みやすい?

長く見えますが半分はテストコードとコメントですし、

時間・分のバリデーションを行ってる部分

  val HourRange = 0 to 23
  val MinuteRange = 0 to 59
  val SpecialCase = (24, 0)

  def isValid = (HourRange contains hour) && (MinuteRange contains minute) || (hour, minute) == SpecialCase

時間帯を分単位のRangeに変換してる部分

start.inMinutes to (end.inMinutes - 1)

時間帯aと時間帯bが重複しているかチェック

a duplicateWith b

とか結構直感的だと思います。
また、timeDuplicationCheckそのものの定義は10ラインしかないです。

どんなもんでしょう。