Module Types.Phantom

type _ t =
| Nil : Base.unit t
| Integer : Base.int t
| Boolean : Base.bool t
| Array : 'a t -> 'a Base.list t
| Tuple : 'a t * Base.int -> 'a Base.list t
| Dict : (Msgpack.t * Msgpack.t) Base.list t
| String : Base.string t
| Buffer : Buffer.t t
| Tabpage : Tabpage.t t
| Window : Window.t t
| Object : Msgpack.t t
| Custom : {
of_msgpack : Msgpack.t -> 'a Base.Or_error.t;
to_msgpack : 'a -> Msgpack.t;
} -> 'a t

For use in pattern matching. e.g. if you have a 'a Phantom.t * 'a, if a pattern match on the phantom succeeds on Phantom.Integer, then 'a unifies with int.