enum

なんか enum みたいなヤツは、 match っていうスーパー switch 文みたいなヤツで使うと、全部のケースがチェックされてるかどうかコンパイラがチェックしてくれてこれが便利なのですが、弱点があって int 値として使えないというか連番機能として使えないというか。

type yaku = TSUMO | RICHI | IPPATSU | PINHU | TANYAO | IPEKO | HAKU | HATSU

こーんな型があったら

let yaku_name = [| "ツモ"; "リーチ"; ... |]

みたいな配列使って yaku_name.[yaku] とかでアクセスしたいんですなー。んでなんか探したら Obj.magic とかいうのが使えるようですがいかにも使うな危険な物体ですがあんま気にしない方針で。

type tsuhai = E | S | W | N | H | T | C
let tsuhai_name = [|
  "東"; "南"; "西"; "北"; "白"; "發"; "中"
|]
let _ =
  print_string tsuhai_name.(Obj.magic E);
  print_newline ()

てな感じでー。ていうかなんかどうすりゃいいんですか?と 偉いかた に聞いたところ Obj.magic しか無いべーどうせ実装1つしか無いしいいんじゃーん、みたいなありがたいお話でしたのでまぁこれで行こうかと。

なんか上のコードはこういきなり色々言語要素が急に出てきたような。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h