OCaml
Pervasives.compare というか、 = で比較できない、あるいはしても意味がない型について。 OCaml 3.10.0 (Cygwin) にてテスト。 Set.S.t Set.S.compare を使いましょう。Pervasives.compareで比較すると、集合として正しく比較できません。 module IntSet = …
誤: print_string( (Printf.sprintf "%s = %s;\n" "a" "b") ^ (Printf.sprintf "%s = %s + %s;\n" "a" "b") (Printf.sprintf "%s = %s;\n" "a" "b") )正: print_string( (Printf.sprintf "%s = %s;\n" "a" "b") ^ (Printf.sprintf "%s = %s + %s;\n" "a" "b"…
リストの各要素に0要素以上を対応させてつなぎたい時。
type t = A of int | B of stringみたいな場合に、t listから A(i)のiだけ取り出して int list を作りたい時など。
let a = Big_int.succ_big_int Big_int.zero_big_int in let b = Big_int.unit_big_int in a = bとかすると Fatal error: exception Invalid_argument("equal: abstract value")と実行時に出る。 コンパイル時に型推論的にはじいてくれないだろうか。ちなみ…