モジュールで作ってみる

クラスを使ってみる - A More Beautiful day


前にクラスで作ったものを、モジュールを使って、書き直してみた。
クラスとモジュールのどちらが良いというわけではないけれど、クラスの方が好きかも。

module Counter =
  struct
    type t = { mutable value : int }

    let create () =
        let cnt = { value = 0 } in cnt

    let increment self =
        self.value <- (self.value + 1);
        Printf.printf "#increment >> value: %d\n" self.value;
        ()

    let get self =
        Printf.printf "#get >> value: %d\n" self.value;
        self.value

  end;;

let f = Counter.create ();;

Counter.increment f;;
Counter.increment f;;

Printf.printf "value: %d\n" (Counter.get f);;