がんばればできる
こちらから勝手に引用.
Noneというコンストラクタを持つデータ型を定義してしまうと、option型をどうがんばっても使えなくなる。その上書き定義の前に何か書き加えてもいいんであれば簡単に回避できるけど, 定義した後となるとできなさそうな気もする.
でも,がんばればできる.
let none : _ option = Obj.magic []
function None -> ... | Some x -> ...
とかいうパターンマッチについても,
function n when n = none -> ... | Some x -> ...
でどうにかなる.
ただし, Some
じゃないものは None
なので
ブランチの順序を変えれば when
節は不要だが.
(ああ,また Obj.magic
を使ってしまった…)
しかし,添付ライブラリには option
型を返すものってないんだなぁ.
find
系の関数は,Not_found
の例外を返すものばかり.
どうでもいいけど,この Not_found
ってのは OCaml ではかなり曲者.
ちゃんと catch する手続きを書いておかないと,
誰が Not_found
したのか分からなくてバグ取りが面倒だったりする.