/usr/lib/ocaml/typerep_lib/typename.mli is in libtyperep-camlp4-dev 113.00.00-3ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 | (** runtime representation of the name of type ['a].
Useful for representing types with a nominal notion of equality *)
type 'a t
type 'a typename = 'a t
val create : ?name:string -> unit -> 'a t
val static : unit t
(** nominal type equality test *)
val same : _ t -> _ t -> bool
val same_witness : 'a t -> 'b t -> ('a, 'b) Type_equal.t option
val same_witness_exn : 'a t -> 'b t -> ('a, 'b) Type_equal.t
(** a runtime representation of fully applied type ['a] *)
module Key : sig
type t
val compare : t -> t -> int
val equal : t -> t -> bool
val hash : t -> int
end
val key : 'a t -> Key.t
(** an untyped runtime representation of non applied type *)
module Uid : sig
type t
val compare : t -> t -> int
val equal : t -> t -> bool
val hash : t -> int
val name : t -> string
end
val uid : 'a t -> Uid.t
val name : 'a t -> string
module type S0 = sig
type t
val typename_of_t : t typename
end
module type S1 = sig
type 'a t
val typename_of_t : 'a typename -> 'a t typename
end
module type S2 = sig
type ('a, 'b) t
val typename_of_t :
'a typename
-> 'b typename
-> ('a, 'b) t typename
end
module type S3 = sig
type ('a, 'b, 'c) t
val typename_of_t :
'a typename
-> 'b typename
-> 'c typename
-> ('a, 'b, 'c) t typename
end
module type S4 = sig
type ('a, 'b, 'c, 'd) t
val typename_of_t :
'a typename
-> 'b typename
-> 'c typename
-> 'd typename
-> ('a, 'b, 'c, 'd) t typename
end
module type S5 = sig
type ('a, 'b, 'c, 'd, 'e) t
val typename_of_t :
'a typename
-> 'b typename
-> 'c typename
-> 'd typename
-> 'e typename
-> ('a, 'b, 'c, 'd, 'e) t typename
end
module Make0(X : Named_intf.S0) : S0
with type t := X.t
module Make1(X : Named_intf.S1) : S1
with type 'a t := 'a X.t
module Make2(X : Named_intf.S2) : S2
with type ('a, 'b) t := ('a, 'b) X.t
module Make3(X : Named_intf.S3) : S3
with type ('a, 'b, 'c) t := ('a, 'b, 'c) X.t
module Make4(X : Named_intf.S4) : S4
with type ('a, 'b, 'c, 'd) t := ('a, 'b, 'c, 'd) X.t
module Make5(X : Named_intf.S5) : S5
with type ('a, 'b, 'c, 'd, 'e) t := ('a, 'b, 'c, 'd, 'e) X.t
module Table(X : sig
type 'a t
end) : sig
type t
val create : int -> t
val mem : t -> 'a typename -> bool
val set : t -> 'a typename -> 'a X.t -> unit
val find : t -> 'a typename -> 'a X.t option
end
(* witness of equality between non applied types *)
module Same_witness_exn_1 (A : S1) (B : S1) : sig
type t = { eq : 'a. (
'a A.t,
'a B.t
) Type_equal.t }
val witness : t
end
module Same_witness_exn_2 (A : S2) (B : S2) : sig
type t = { eq : 'a 'b. (
('a, 'b) A.t,
('a, 'b) B.t
) Type_equal.t }
val witness : t
end
module Same_witness_exn_3 (A : S3) (B : S3) : sig
type t = { eq : 'a 'b 'c. (
('a, 'b, 'c) A.t,
('a, 'b, 'c) B.t
) Type_equal.t }
val witness : t
end
module Same_witness_exn_4 (A : S4) (B : S4) : sig
type t = { eq : 'a 'b 'c 'd. (
('a, 'b, 'c, 'd) A.t,
('a, 'b, 'c, 'd) B.t
) Type_equal.t }
val witness : t
end
module Same_witness_exn_5 (A : S5) (B : S5) : sig
type t = { eq : 'a 'b 'c 'd 'e. (
('a, 'b, 'c, 'd, 'e) A.t,
('a, 'b, 'c, 'd, 'e) B.t
) Type_equal.t }
val witness : t
end
|