Reading:オブ脳本(6)社長命令・起立!(OCaml編)
MLとかどうかなってことでOCamlでも書いてみました。型推論型推論。ああ何年ぶりに書いただろうか…
http://www.ocaml-tutorial.org/ja/objects
を参考に書きました。自信なし!(っていうかMLっぽくないっすね)
shain.ml
class virtual shain = object (self) val mutable kihonkyu = ( 0 : int ) method set_kihonkyu x = kihonkyu <- x method get_kihonkyu = kihonkyu method get_bonus = kihonkyu * 3 method virtual stand_up : unit method virtual get_kyuryo : int end class tanto = object (self) inherit shain as super method stand_up = Printf.printf "担当が普通に起立しました。\n" method get_kyuryo = super#get_kihonkyu end class shunin = object (self) inherit shain as super method stand_up = Printf.printf "主任がすばやく立ちました。\n" method get_kyuryo = super#get_kihonkyu * 2 + 1 end class shacho = object (self) method meirei ( s : shain ) kihonkyu = s#set_kihonkyu kihonkyu; s#stand_up; Printf.printf "私の給料は%d円です。\n" s#get_kyuryo; Printf.printf "ボーナスは%d円です。\n" s#get_bonus end let a = new tanto;; let b = new shunin;; let c = new shacho;; c#meirei a 100;; c#meirei b 100;;
実行結果
$ ocamlc shain.ml -o shain $ ./shain 担当が普通に起立しました。 私の給料は100円です。 ボーナスは300円です。 主任がすばやく立ちました。 私の給料は201円です。 ボーナスは300円です。
実行環境セットアップ方法(おまけ)
debian なので楽ちんです。いつもの
$ sudo aptitude install ocaml
以上。
$ ocaml -version
The Objective Caml toplevel, version 3.10.1