package travesty

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file types_intf.ml

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
(* This file is part of 'travesty'.

   Copyright (c) 2018 by Matt Windsor

   Permission is hereby granted, free of charge, to any person obtaining a
   copy of this software and associated documentation files (the
   "Software"), to deal in the Software without restriction, including
   without limitation the rights to use, copy, modify, merge, publish,
   distribute, sublicense, and/or sell copies of the Software, and to permit
   persons to whom the Software is furnished to do so, subject to the
   following conditions:

   The above copyright notice and this permission notice shall be included
   in all copies or substantial portions of the Software.

   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
   NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
   DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
   OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
   USE OR OTHER DEALINGS IN THE SOFTWARE. *)

(** Generic type signatures.

    [Types_intf] contains several signatures that contain types for
    container-like structures. These are intended for inclusion in other
    signatures. *)

(** {2 Mappable and traversable} *)

(** [Generic] defines the types used in arity-generic container-like
    signatures. *)
module type Generic = sig
  (** Placeholder for the container type. *)
  type 'a t

  (** Placeholder for the type of elements inside the container. *)
  type 'a elt
end

(** [S0] defines the types used in arity-0 container-like signatures. *)
module type S0 = sig
  (** The container type. *)
  type t

  (** The element type. *)
  type elt
end

(** There is no [S1], as Core's [T1] has the same effect. *)

(** {2 Bi-mappable and bi-traversable} *)

(** Types used in generic signatures over bi-operations. *)
module type Bi_generic = sig
  (** Generic container type. *)
  type ('l, 'r) t

  (** Generic left type. *)
  type 'l left

  (** Generic right type. *)
  type 'r right
end

(** Types used in leftwards arity-1 bi-operation signatures. *)
module type Bi_left = sig
  (** Partially fixed type of containers. *)
  type 'l t

  (** Fixed type of right elements. *)
  type right
end

(** Types used in rightwards arity-1 bi-operation signatures. *)
module type Bi_right = sig
  (** Partially fixed type of containers. *)
  type 'r t

  (** Fixed type of left elements. *)
  type left
end

(** Types used in arity-0 bi-operation signatures. *)
module type Bi0 = sig
  (** Fixed type of containers. *)
  type t

  (** Fixed type of left elements. *)
  type left

  (** Fixed type of right elements. *)
  type right
end

(** There is no [Bi2], as Core's [T2] has the same effect. *)