365 lines
14 KiB
Plaintext
365 lines
14 KiB
Plaintext
(setglobal Comparison_table!
|
|
(let
|
|
(gen_cmp = (function x y (caml_compare x y))
|
|
int_cmp = (function x y (caml_int_compare x y))
|
|
bool_cmp =
|
|
(function x y (caml_int_compare x y))
|
|
intlike_cmp =
|
|
(function x y (caml_int_compare x y))
|
|
float_cmp =
|
|
(function x y (caml_float_compare x y))
|
|
string_cmp =
|
|
(function x y (caml_string_compare x y))
|
|
int32_cmp =
|
|
(function x y (caml_int32_compare x y))
|
|
int64_cmp =
|
|
(function x y (caml_int64_compare x y))
|
|
nativeint_cmp =
|
|
(function x y (caml_nativeint_compare x y))
|
|
gen_eq = (function x y (caml_equal x y))
|
|
int_eq = (function x y (== x y))
|
|
bool_eq = (function x y (== x y))
|
|
intlike_eq = (function x y (== x y))
|
|
float_eq = (function x y (==. x y))
|
|
string_eq =
|
|
(function x y (caml_string_equal x y))
|
|
int32_eq = (function x y (Int32.== x y))
|
|
int64_eq = (function x y (Int64.== x y))
|
|
nativeint_eq =
|
|
(function x y (Nativeint.== x y))
|
|
gen_ne = (function x y (caml_notequal x y))
|
|
int_ne = (function x y (!= x y))
|
|
bool_ne = (function x y (!= x y))
|
|
intlike_ne = (function x y (!= x y))
|
|
float_ne = (function x y (!=. x y))
|
|
string_ne =
|
|
(function x y (caml_string_notequal x y))
|
|
int32_ne = (function x y (Int32.!= x y))
|
|
int64_ne = (function x y (Int64.!= x y))
|
|
nativeint_ne =
|
|
(function x y (Nativeint.!= x y))
|
|
gen_lt = (function x y (caml_lessthan x y))
|
|
int_lt = (function x y (< x y))
|
|
bool_lt = (function x y (< x y))
|
|
intlike_lt = (function x y (< x y))
|
|
float_lt = (function x y (<. x y))
|
|
string_lt =
|
|
(function x y (caml_string_lessthan x y))
|
|
int32_lt = (function x y (Int32.< x y))
|
|
int64_lt = (function x y (Int64.< x y))
|
|
nativeint_lt = (function x y (Nativeint.< x y))
|
|
gen_gt = (function x y (caml_greaterthan x y))
|
|
int_gt = (function x y (> x y))
|
|
bool_gt = (function x y (> x y))
|
|
intlike_gt = (function x y (> x y))
|
|
float_gt = (function x y (>. x y))
|
|
string_gt =
|
|
(function x y (caml_string_greaterthan x y))
|
|
int32_gt = (function x y (Int32.> x y))
|
|
int64_gt = (function x y (Int64.> x y))
|
|
nativeint_gt = (function x y (Nativeint.> x y))
|
|
gen_le = (function x y (caml_lessequal x y))
|
|
int_le = (function x y (<= x y))
|
|
bool_le = (function x y (<= x y))
|
|
intlike_le = (function x y (<= x y))
|
|
float_le = (function x y (<=. x y))
|
|
string_le =
|
|
(function x y (caml_string_lessequal x y))
|
|
int32_le = (function x y (Int32.<= x y))
|
|
int64_le = (function x y (Int64.<= x y))
|
|
nativeint_le =
|
|
(function x y (Nativeint.<= x y))
|
|
gen_ge = (function x y (caml_greaterequal x y))
|
|
int_ge = (function x y (>= x y))
|
|
bool_ge = (function x y (>= x y))
|
|
intlike_ge = (function x y (>= x y))
|
|
float_ge = (function x y (>=. x y))
|
|
string_ge =
|
|
(function x y (caml_string_greaterequal x y))
|
|
int32_ge = (function x y (Int32.>= x y))
|
|
int64_ge = (function x y (Int64.>= x y))
|
|
nativeint_ge =
|
|
(function x y (Nativeint.>= x y))
|
|
eta_gen_cmp =
|
|
(function prim prim (caml_compare prim prim))
|
|
eta_int_cmp =
|
|
(function prim prim (caml_int_compare prim prim))
|
|
eta_bool_cmp =
|
|
(function prim prim (caml_int_compare prim prim))
|
|
eta_intlike_cmp =
|
|
(function prim prim (caml_int_compare prim prim))
|
|
eta_float_cmp =
|
|
(function prim prim
|
|
(caml_float_compare prim prim))
|
|
eta_string_cmp =
|
|
(function prim prim
|
|
(caml_string_compare prim prim))
|
|
eta_int32_cmp =
|
|
(function prim prim
|
|
(caml_int32_compare prim prim))
|
|
eta_int64_cmp =
|
|
(function prim prim
|
|
(caml_int64_compare prim prim))
|
|
eta_nativeint_cmp =
|
|
(function prim prim
|
|
(caml_nativeint_compare prim prim))
|
|
eta_gen_eq =
|
|
(function prim prim (caml_equal prim prim))
|
|
eta_int_eq =
|
|
(function prim prim (== prim prim))
|
|
eta_bool_eq =
|
|
(function prim prim (== prim prim))
|
|
eta_intlike_eq =
|
|
(function prim prim (== prim prim))
|
|
eta_float_eq =
|
|
(function prim prim (==. prim prim))
|
|
eta_string_eq =
|
|
(function prim prim (caml_string_equal prim prim))
|
|
eta_int32_eq =
|
|
(function prim prim (Int32.== prim prim))
|
|
eta_int64_eq =
|
|
(function prim prim (Int64.== prim prim))
|
|
eta_nativeint_eq =
|
|
(function prim prim (Nativeint.== prim prim))
|
|
eta_gen_ne =
|
|
(function prim prim (caml_notequal prim prim))
|
|
eta_int_ne =
|
|
(function prim prim (!= prim prim))
|
|
eta_bool_ne =
|
|
(function prim prim (!= prim prim))
|
|
eta_intlike_ne =
|
|
(function prim prim (!= prim prim))
|
|
eta_float_ne =
|
|
(function prim prim (!=. prim prim))
|
|
eta_string_ne =
|
|
(function prim prim
|
|
(caml_string_notequal prim prim))
|
|
eta_int32_ne =
|
|
(function prim prim (Int32.!= prim prim))
|
|
eta_int64_ne =
|
|
(function prim prim (Int64.!= prim prim))
|
|
eta_nativeint_ne =
|
|
(function prim prim (Nativeint.!= prim prim))
|
|
eta_gen_lt =
|
|
(function prim prim (caml_lessthan prim prim))
|
|
eta_int_lt = (function prim prim (< prim prim))
|
|
eta_bool_lt =
|
|
(function prim prim (< prim prim))
|
|
eta_intlike_lt =
|
|
(function prim prim (< prim prim))
|
|
eta_float_lt =
|
|
(function prim prim (<. prim prim))
|
|
eta_string_lt =
|
|
(function prim prim
|
|
(caml_string_lessthan prim prim))
|
|
eta_int32_lt =
|
|
(function prim prim (Int32.< prim prim))
|
|
eta_int64_lt =
|
|
(function prim prim (Int64.< prim prim))
|
|
eta_nativeint_lt =
|
|
(function prim prim (Nativeint.< prim prim))
|
|
eta_gen_gt =
|
|
(function prim prim (caml_greaterthan prim prim))
|
|
eta_int_gt = (function prim prim (> prim prim))
|
|
eta_bool_gt =
|
|
(function prim prim (> prim prim))
|
|
eta_intlike_gt =
|
|
(function prim prim (> prim prim))
|
|
eta_float_gt =
|
|
(function prim prim (>. prim prim))
|
|
eta_string_gt =
|
|
(function prim prim
|
|
(caml_string_greaterthan prim prim))
|
|
eta_int32_gt =
|
|
(function prim prim (Int32.> prim prim))
|
|
eta_int64_gt =
|
|
(function prim prim (Int64.> prim prim))
|
|
eta_nativeint_gt =
|
|
(function prim prim (Nativeint.> prim prim))
|
|
eta_gen_le =
|
|
(function prim prim (caml_lessequal prim prim))
|
|
eta_int_le =
|
|
(function prim prim (<= prim prim))
|
|
eta_bool_le =
|
|
(function prim prim (<= prim prim))
|
|
eta_intlike_le =
|
|
(function prim prim (<= prim prim))
|
|
eta_float_le =
|
|
(function prim prim (<=. prim prim))
|
|
eta_string_le =
|
|
(function prim prim
|
|
(caml_string_lessequal prim prim))
|
|
eta_int32_le =
|
|
(function prim prim (Int32.<= prim prim))
|
|
eta_int64_le =
|
|
(function prim prim (Int64.<= prim prim))
|
|
eta_nativeint_le =
|
|
(function prim prim (Nativeint.<= prim prim))
|
|
eta_gen_ge =
|
|
(function prim prim (caml_greaterequal prim prim))
|
|
eta_int_ge =
|
|
(function prim prim (>= prim prim))
|
|
eta_bool_ge =
|
|
(function prim prim (>= prim prim))
|
|
eta_intlike_ge =
|
|
(function prim prim (>= prim prim))
|
|
eta_float_ge =
|
|
(function prim prim (>=. prim prim))
|
|
eta_string_ge =
|
|
(function prim prim
|
|
(caml_string_greaterequal prim prim))
|
|
eta_int32_ge =
|
|
(function prim prim (Int32.>= prim prim))
|
|
eta_int64_ge =
|
|
(function prim prim (Int64.>= prim prim))
|
|
eta_nativeint_ge =
|
|
(function prim prim (Nativeint.>= prim prim))
|
|
int_vec = [0: [0: 1 1] [0: [0: 1 2] [0: [0: 2 1] 0a]]]
|
|
bool_vec = [0: [0: 0a 0a] [0: [0: 0a 1a] [0: [0: 1a 0a] 0a]]]
|
|
intlike_vec = [0: [0: 0a 0a] [0: [0: 0a 1a] [0: [0: 1a 0a] 0a]]]
|
|
float_vec = [0: [0: 1. 1.] [0: [0: 1. 2.] [0: [0: 2. 1.] 0a]]]
|
|
string_vec =
|
|
[0: [0: "1" "1"] [0: [0: "1" "2"] [0: [0: "2" "1"] 0a]]]
|
|
int32_vec = [0: [0: 1l 1l] [0: [0: 1l 2l] [0: [0: 2l 1l] 0a]]]
|
|
int64_vec = [0: [0: 1L 1L] [0: [0: 1L 2L] [0: [0: 2L 1L] 0a]]]
|
|
nativeint_vec = [0: [0: 1n 1n] [0: [0: 1n 2n] [0: [0: 2n 1n] 0a]]]
|
|
test_vec =
|
|
(function cmp eq ne lt gt le ge
|
|
vec
|
|
(let
|
|
(uncurry =
|
|
(function f param
|
|
(apply f (field 0 param) (field 1 param)))
|
|
map =
|
|
(function f l
|
|
(apply (field 12 (global List!)) (apply uncurry f)
|
|
l)))
|
|
(makeblock 0
|
|
(makeblock 0 (apply map gen_cmp vec)
|
|
(apply map cmp vec))
|
|
(apply map
|
|
(function gen spec
|
|
(makeblock 0 (apply map gen vec)
|
|
(apply map spec vec)))
|
|
(makeblock 0 (makeblock 0 gen_eq eq)
|
|
(makeblock 0 (makeblock 0 gen_ne ne)
|
|
(makeblock 0 (makeblock 0 gen_lt lt)
|
|
(makeblock 0 (makeblock 0 gen_gt gt)
|
|
(makeblock 0 (makeblock 0 gen_le le)
|
|
(makeblock 0 (makeblock 0 gen_ge ge) 0a)))))))))))
|
|
(seq
|
|
(apply test_vec int_cmp int_eq int_ne int_lt
|
|
int_gt int_le int_ge int_vec)
|
|
(apply test_vec bool_cmp bool_eq bool_ne
|
|
bool_lt bool_gt bool_le bool_ge bool_vec)
|
|
(apply test_vec intlike_cmp intlike_eq intlike_ne
|
|
intlike_lt intlike_gt intlike_le intlike_ge
|
|
intlike_vec)
|
|
(apply test_vec float_cmp float_eq float_ne
|
|
float_lt float_gt float_le float_ge
|
|
float_vec)
|
|
(apply test_vec string_cmp string_eq string_ne
|
|
string_lt string_gt string_le string_ge
|
|
string_vec)
|
|
(apply test_vec int32_cmp int32_eq int32_ne
|
|
int32_lt int32_gt int32_le int32_ge
|
|
int32_vec)
|
|
(apply test_vec int64_cmp int64_eq int64_ne
|
|
int64_lt int64_gt int64_le int64_ge
|
|
int64_vec)
|
|
(apply test_vec nativeint_cmp nativeint_eq
|
|
nativeint_ne nativeint_lt nativeint_gt
|
|
nativeint_le nativeint_ge nativeint_vec)
|
|
(let
|
|
(eta_test_vec =
|
|
(function cmp eq ne lt gt le ge
|
|
vec
|
|
(let
|
|
(uncurry =
|
|
(function f param
|
|
(apply f (field 0 param) (field 1 param)))
|
|
map =
|
|
(function f l
|
|
(apply (field 12 (global List!))
|
|
(apply uncurry f) l)))
|
|
(makeblock 0
|
|
(makeblock 0 (apply map eta_gen_cmp vec)
|
|
(apply map cmp vec))
|
|
(apply map
|
|
(function gen spec
|
|
(makeblock 0 (apply map gen vec)
|
|
(apply map spec vec)))
|
|
(makeblock 0 (makeblock 0 eta_gen_eq eq)
|
|
(makeblock 0 (makeblock 0 eta_gen_ne ne)
|
|
(makeblock 0 (makeblock 0 eta_gen_lt lt)
|
|
(makeblock 0 (makeblock 0 eta_gen_gt gt)
|
|
(makeblock 0 (makeblock 0 eta_gen_le le)
|
|
(makeblock 0
|
|
(makeblock 0 eta_gen_ge ge) 0a)))))))))))
|
|
(seq
|
|
(apply eta_test_vec eta_int_cmp eta_int_eq
|
|
eta_int_ne eta_int_lt eta_int_gt eta_int_le
|
|
eta_int_ge int_vec)
|
|
(apply eta_test_vec eta_bool_cmp eta_bool_eq
|
|
eta_bool_ne eta_bool_lt eta_bool_gt
|
|
eta_bool_le eta_bool_ge bool_vec)
|
|
(apply eta_test_vec eta_intlike_cmp eta_intlike_eq
|
|
eta_intlike_ne eta_intlike_lt eta_intlike_gt
|
|
eta_intlike_le eta_intlike_ge intlike_vec)
|
|
(apply eta_test_vec eta_float_cmp eta_float_eq
|
|
eta_float_ne eta_float_lt eta_float_gt
|
|
eta_float_le eta_float_ge float_vec)
|
|
(apply eta_test_vec eta_string_cmp eta_string_eq
|
|
eta_string_ne eta_string_lt eta_string_gt
|
|
eta_string_le eta_string_ge string_vec)
|
|
(apply eta_test_vec eta_int32_cmp eta_int32_eq
|
|
eta_int32_ne eta_int32_lt eta_int32_gt
|
|
eta_int32_le eta_int32_ge int32_vec)
|
|
(apply eta_test_vec eta_int64_cmp eta_int64_eq
|
|
eta_int64_ne eta_int64_lt eta_int64_gt
|
|
eta_int64_le eta_int64_ge int64_vec)
|
|
(apply eta_test_vec eta_nativeint_cmp
|
|
eta_nativeint_eq eta_nativeint_ne eta_nativeint_lt
|
|
eta_nativeint_gt eta_nativeint_le eta_nativeint_ge
|
|
nativeint_vec)
|
|
(makeblock 0 gen_cmp int_cmp bool_cmp
|
|
intlike_cmp float_cmp string_cmp int32_cmp
|
|
int64_cmp nativeint_cmp gen_eq int_eq
|
|
bool_eq intlike_eq float_eq string_eq
|
|
int32_eq int64_eq nativeint_eq gen_ne
|
|
int_ne bool_ne intlike_ne float_ne
|
|
string_ne int32_ne int64_ne nativeint_ne
|
|
gen_lt int_lt bool_lt intlike_lt
|
|
float_lt string_lt int32_lt int64_lt
|
|
nativeint_lt gen_gt int_gt bool_gt
|
|
intlike_gt float_gt string_gt int32_gt
|
|
int64_gt nativeint_gt gen_le int_le
|
|
bool_le intlike_le float_le string_le
|
|
int32_le int64_le nativeint_le gen_ge
|
|
int_ge bool_ge intlike_ge float_ge
|
|
string_ge int32_ge int64_ge nativeint_ge
|
|
eta_gen_cmp eta_int_cmp eta_bool_cmp
|
|
eta_intlike_cmp eta_float_cmp eta_string_cmp
|
|
eta_int32_cmp eta_int64_cmp eta_nativeint_cmp
|
|
eta_gen_eq eta_int_eq eta_bool_eq
|
|
eta_intlike_eq eta_float_eq eta_string_eq
|
|
eta_int32_eq eta_int64_eq eta_nativeint_eq
|
|
eta_gen_ne eta_int_ne eta_bool_ne
|
|
eta_intlike_ne eta_float_ne eta_string_ne
|
|
eta_int32_ne eta_int64_ne eta_nativeint_ne
|
|
eta_gen_lt eta_int_lt eta_bool_lt
|
|
eta_intlike_lt eta_float_lt eta_string_lt
|
|
eta_int32_lt eta_int64_lt eta_nativeint_lt
|
|
eta_gen_gt eta_int_gt eta_bool_gt
|
|
eta_intlike_gt eta_float_gt eta_string_gt
|
|
eta_int32_gt eta_int64_gt eta_nativeint_gt
|
|
eta_gen_le eta_int_le eta_bool_le
|
|
eta_intlike_le eta_float_le eta_string_le
|
|
eta_int32_le eta_int64_le eta_nativeint_le
|
|
eta_gen_ge eta_int_ge eta_bool_ge
|
|
eta_intlike_ge eta_float_ge eta_string_ge
|
|
eta_int32_ge eta_int64_ge eta_nativeint_ge
|
|
int_vec bool_vec intlike_vec float_vec
|
|
string_vec int32_vec int64_vec nativeint_vec
|
|
test_vec eta_test_vec))))))
|