どう書く? - バイナリクロック

バイナリクロック- どう書く? org をF#で考えてみました。
張り切りすぎて多少余計な機能が実装されています。。。
これを実行すると、現在時刻を表示します。

open System

module BinaryClock =
  type BinChar = {Zero : string; One : string }

  let ConvertBinNumberString number (binchar : BinChar) =
    let mutable num = number
    let mutable result = ""
    while num <> 0 do
      match num &&& 1 with
      | 0 -> result <- binchar.Zero + result
      | _ -> result <- binchar.One + result
      num <- num >>> 1
    result;

  let ConvertBinNumberStringDefault number =
    ConvertBinNumberString number {Zero = "□"; One = "■"}

  let CurrentTime () =
    let h = DateTime.Now.Hour
    printfn "%s : %s" (ConvertBinNumberStringDefault h) (h.ToString("00"))
    let m = DateTime.Now.Minute
    printfn "%s : %s" (ConvertBinNumberStringDefault m) (m.ToString("00"))

[<EntryPoint>]
let main(args : string[]) =
  BinaryClock.CurrentTime ()
  0