Up – Package index » core_kernel » Sources » core_kernel.univ » univ.mlcore_kernel CHANGES LICENSE Library core_kernel Library core_kernel.ansi_kernel Library core_kernel.balanced_reducer Library core_kernel.binary_packing Library core_kernel.bounded_int_table Library core_kernel.bus Library core_kernel.caml_threads Library core_kernel.caml_unix Library core_kernel.composition_infix Library core_kernel.enum Library core_kernel.fheap Library core_kernel.flags Library core_kernel.force_once Library core_kernel.hash_heap Library core_kernel.int_set Library core_kernel.iobuf Library core_kernel.limiter Library core_kernel.moption Library core_kernel.nonempty_list Library core_kernel.pairing_heap Library core_kernel.pooled_hashtbl Library core_kernel.reversed_list Library core_kernel.rope Library core_kernel.sexp_hidden_in_test Library core_kernel.thread_pool_cpu_affinity Library core_kernel.thread_safe_queue Library core_kernel.timing_wheel Library core_kernel.total_map Library core_kernel.tuple_pool Library core_kernel.univ Library core_kernel.unpack_buffer Library core_kernel.uopt Library core_kernel.uuid Library core_kernel.version_util Library core_kernel.weak_array Library core_kernel.weak_hashtbl Library core_kernel.weak_pointer Sources core_kernel core_kernel.ansi_kernel core_kernel.balanced_reducer core_kernel.binary_packing core_kernel.bounded_int_table core_kernel.bus core_kernel.caml_threads core_kernel.caml_unix core_kernel.composition_infix core_kernel.enum core_kernel.fheap core_kernel.flags core_kernel.force_once core_kernel.hash_heap core_kernel.int_set core_kernel.iobuf core_kernel.limiter core_kernel.moption core_kernel.nonempty_list core_kernel.pairing_heap core_kernel.pooled_hashtbl core_kernel.reversed_list core_kernel.rope core_kernel.sexp_hidden_in_test core_kernel.thread_pool_cpu_affinity core_kernel.thread_safe_queue core_kernel.timing_wheel core_kernel.total_map core_kernel.tuple_pool core_kernel.univ core_kernel.unpack_buffer core_kernel.uopt core_kernel.uuid core_kernel.version_util core_kernel.weak_array core_kernel.weak_hashtbl core_kernel.weak_pointer 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
open ! Core
open ! Import
module Id = Type_equal . Id
module View = struct
type t = T : ' a Id . t * ' a -> t
end
include View
let view = Fn . id
let create id value = T ( id , value )
let type_id_name ( T ( id , _ ) ) = Id . name id
let type_id_uid ( T ( id , _ ) ) = Id . uid id
let sexp_of_t ( T ( id , value ) ) = Id . to_sexp id value
let does_match ( T ( id1 , _ ) ) id2 = Id . same id1 id2
let match_ ( type a ) ( T ( id1 , value ) ) ( id2 : a Id . t ) =
match Id . same_witness id1 id2 with
| Some Type_equal . T -> Some ( value : a )
| None -> None
;;
let match_exn ( type a ) ( T ( id1 , value ) as t ) ( id2 : a Id . t ) =
match Id . same_witness id1 id2 with
| Some Type_equal . T -> ( value : a )
| None ->
failwiths
~here: [% here ]
"Univ.match_exn called with mismatched value and type id"
( t , id2 )
[% sexp_of : t * _ Id . t ]
;;