let (+) = fun x y -> match (x, y) with
| (`int u, `int v) -> `int(u + v)
| (`int u, `float v) -> `float(float_of_int u +. v)
| (`float u, `int v) -> `float(u +. float_of_int v)
| (`float u, `float v) -> `float(u +. v)
とか書いて
let n = `int 0 + `int 1;;
と使った場合,どの程度最適化されることを期待していいんだろうか.
let n = 0 + 1;;
と同じコードになれば一番嬉しいけど….