19 open Hints_declaration
45 type ('output, 'input, 't) iO =
46 | Interact of 'output * ('input -> ('output, 'input, 't) iO)
48 | Wrong of Errors.errmsg
51 ('a1 -> ('a2 -> ('a1, 'a2, 'a3) iO) -> ('a2 -> 'a4) -> 'a4) -> ('a3 -> 'a4)
52 -> (Errors.errmsg -> 'a4) -> ('a1, 'a2, 'a3) iO -> 'a4
55 ('a1 -> ('a2 -> ('a1, 'a2, 'a3) iO) -> ('a2 -> 'a4) -> 'a4) -> ('a3 -> 'a4)
56 -> (Errors.errmsg -> 'a4) -> ('a1, 'a2, 'a3) iO -> 'a4
59 ('a1 -> ('a2 -> ('a1, 'a2, 'a3) iO) -> ('a2 -> 'a4) -> 'a4) -> ('a3 -> 'a4)
60 -> (Errors.errmsg -> 'a4) -> ('a1, 'a2, 'a3) iO -> 'a4
63 ('a1 -> ('a2 -> ('a1, 'a2, 'a3) iO) -> ('a2 -> 'a4) -> 'a4) -> ('a3 -> 'a4)
64 -> (Errors.errmsg -> 'a4) -> ('a1, 'a2, 'a3) iO -> 'a4
67 ('a1 -> ('a2 -> ('a1, 'a2, 'a3) iO) -> ('a2 -> 'a4) -> 'a4) -> ('a3 -> 'a4)
68 -> (Errors.errmsg -> 'a4) -> ('a1, 'a2, 'a3) iO -> 'a4
70 val iO_inv_rect_Type4 :
71 ('a1, 'a2, 'a3) iO -> ('a1 -> ('a2 -> ('a1, 'a2, 'a3) iO) -> ('a2 -> __ ->
72 'a4) -> __ -> 'a4) -> ('a3 -> __ -> 'a4) -> (Errors.errmsg -> __ -> 'a4) ->
75 val iO_inv_rect_Type3 :
76 ('a1, 'a2, 'a3) iO -> ('a1 -> ('a2 -> ('a1, 'a2, 'a3) iO) -> ('a2 -> __ ->
77 'a4) -> __ -> 'a4) -> ('a3 -> __ -> 'a4) -> (Errors.errmsg -> __ -> 'a4) ->
80 val iO_inv_rect_Type2 :
81 ('a1, 'a2, 'a3) iO -> ('a1 -> ('a2 -> ('a1, 'a2, 'a3) iO) -> ('a2 -> __ ->
82 'a4) -> __ -> 'a4) -> ('a3 -> __ -> 'a4) -> (Errors.errmsg -> __ -> 'a4) ->
85 val iO_inv_rect_Type1 :
86 ('a1, 'a2, 'a3) iO -> ('a1 -> ('a2 -> ('a1, 'a2, 'a3) iO) -> ('a2 -> __ ->
87 'a4) -> __ -> 'a4) -> ('a3 -> __ -> 'a4) -> (Errors.errmsg -> __ -> 'a4) ->
90 val iO_inv_rect_Type0 :
91 ('a1, 'a2, 'a3) iO -> ('a1 -> ('a2 -> ('a1, 'a2, 'a3) iO) -> ('a2 -> __ ->
92 'a4) -> __ -> 'a4) -> ('a3 -> __ -> 'a4) -> (Errors.errmsg -> __ -> 'a4) ->
95 val iO_discr : ('a1, 'a2, 'a3) iO -> ('a1, 'a2, 'a3) iO -> __
97 val iO_jmdiscr : ('a1, 'a2, 'a3) iO -> ('a1, 'a2, 'a3) iO -> __
102 ('a1, 'a2, 'a3) iO -> ('a3 -> ('a1, 'a2, 'a4) iO) -> ('a1, 'a2, 'a4) iO
104 val iOMonad : Monad.monadProps
106 val bindIO2 : __ -> ('a3 -> 'a4 -> __) -> __
108 val iORel : Monad.monadRel
110 val pred_io_inject : ('a1, 'a2, 'a3) iO -> ('a1, 'a2, 'a3 Types.sig0) iO
112 val iOPred : Monad.injMonadPred
114 val err_to_io : 'a3 Errors.res -> ('a1, 'a2, 'a3) iO
116 val dpi1__o__err_to_io__o__inject :
117 ('a2 Errors.res, 'a3) Types.dPair -> ('a1, 'a4, 'a2) iO Types.sig0
119 val eject__o__err_to_io__o__inject :
120 'a2 Errors.res Types.sig0 -> ('a1, 'a3, 'a2) iO Types.sig0
122 val err_to_io__o__inject : 'a2 Errors.res -> ('a1, 'a3, 'a2) iO Types.sig0
124 val dpi1__o__err_to_io :
125 ('a2 Errors.res, 'a3) Types.dPair -> ('a1, 'a4, 'a2) iO
127 val eject__o__err_to_io : 'a2 Errors.res Types.sig0 -> ('a1, 'a3, 'a2) iO
130 'a3 Types.sig0 Errors.res -> ('a1, 'a2, 'a3 Types.sig0) iO
132 val io_inject_0 : ('a1, 'a2, 'a3) iO -> ('a1, 'a2, 'a3 Types.sig0) iO
135 ('a1, 'a2, 'a3) iO Types.option -> ('a1, 'a2, 'a3 Types.sig0) iO
137 val io_eject : ('a1, 'a2, 'a3 Types.sig0) iO -> ('a1, 'a2, 'a3) iO
139 val dpi1__o__io_inject__o__inject :
140 (('a1, 'a3, 'a2) iO Types.option, 'a4) Types.dPair -> ('a1, 'a3, 'a2
141 Types.sig0) iO Types.sig0
143 val eject__o__io_inject__o__inject :
144 ('a1, 'a3, 'a2) iO Types.option Types.sig0 -> ('a1, 'a3, 'a2 Types.sig0) iO
147 val io_inject__o__inject :
148 ('a1, 'a3, 'a2) iO Types.option -> ('a1, 'a3, 'a2 Types.sig0) iO Types.sig0
150 val dpi1__o__io_inject :
151 (('a1, 'a3, 'a2) iO Types.option, 'a4) Types.dPair -> ('a1, 'a3, 'a2
154 val eject__o__io_inject :
155 ('a1, 'a3, 'a2) iO Types.option Types.sig0 -> ('a1, 'a3, 'a2 Types.sig0) iO
157 val io_inject__o__io_eject__o__inject :
158 ('a1, 'a3, 'a2) iO Types.option -> ('a1, 'a3, 'a2) iO Types.sig0
160 val dpi1__o__err_to_io__o__io_eject__o__inject :
161 ('a2 Types.sig0 Errors.res, 'a4) Types.dPair -> ('a1, 'a3, 'a2) iO
164 val dpi1__o__io_inject__o__io_eject__o__inject :
165 (('a1, 'a3, 'a2) iO Types.option, 'a4) Types.dPair -> ('a1, 'a3, 'a2) iO
168 val eject__o__err_to_io__o__io_eject__o__inject :
169 'a2 Types.sig0 Errors.res Types.sig0 -> ('a1, 'a3, 'a2) iO Types.sig0
171 val eject__o__io_inject__o__io_eject__o__inject :
172 ('a1, 'a3, 'a2) iO Types.option Types.sig0 -> ('a1, 'a3, 'a2) iO Types.sig0
174 val err_to_io__o__io_eject__o__inject :
175 'a2 Types.sig0 Errors.res -> ('a1, 'a3, 'a2) iO Types.sig0
177 val dpi1__o__io_eject__o__inject :
178 (('a1, 'a3, 'a2 Types.sig0) iO, 'a4) Types.dPair -> ('a1, 'a3, 'a2) iO
181 val eject__o__io_eject__o__inject :
182 ('a1, 'a3, 'a2 Types.sig0) iO Types.sig0 -> ('a1, 'a3, 'a2) iO Types.sig0
184 val io_eject__o__inject :
185 ('a1, 'a3, 'a2 Types.sig0) iO -> ('a1, 'a3, 'a2) iO Types.sig0
187 val io_inject__o__io_eject :
188 ('a1, 'a3, 'a2) iO Types.option -> ('a1, 'a3, 'a2) iO
190 val dpi1__o__err_to_io__o__io_eject :
191 ('a2 Types.sig0 Errors.res, 'a4) Types.dPair -> ('a1, 'a3, 'a2) iO
193 val dpi1__o__io_inject__o__io_eject :
194 (('a1, 'a3, 'a2) iO Types.option, 'a4) Types.dPair -> ('a1, 'a3, 'a2) iO
196 val eject__o__err_to_io__o__io_eject :
197 'a2 Types.sig0 Errors.res Types.sig0 -> ('a1, 'a3, 'a2) iO
199 val eject__o__io_inject__o__io_eject :
200 ('a1, 'a3, 'a2) iO Types.option Types.sig0 -> ('a1, 'a3, 'a2) iO
202 val err_to_io__o__io_eject : 'a2 Types.sig0 Errors.res -> ('a1, 'a3, 'a2) iO
204 val dpi1__o__io_eject :
205 (('a1, 'a3, 'a2 Types.sig0) iO, 'a4) Types.dPair -> ('a1, 'a3, 'a2) iO
207 val eject__o__io_eject :
208 ('a1, 'a3, 'a2 Types.sig0) iO Types.sig0 -> ('a1, 'a3, 'a2) iO
210 val opt_to_io : Errors.errmsg -> 'a3 Types.option -> ('a1, 'a2, 'a3) iO
213 'a3 Errors.res -> ('a3 -> 'a4 Errors.res) -> 'a4 -> ('a3 -> __ -> __ ->
217 ('a1, 'a2, 'a3) iO -> ('a3 -> ('a1, 'a2, 'a4) iO) -> 'a4 -> ('a3 -> __ ->
220 val bindIO_res_interact :
221 'a3 Errors.res -> ('a3 -> ('a1, 'a2, 'a4) iO) -> 'a1 -> ('a2 -> ('a1, 'a2,
222 'a4) iO) -> ('a3 -> __ -> __ -> 'a5) -> 'a5
224 val bindIO_opt_interact :
225 Errors.errmsg -> 'a3 Types.option -> ('a3 -> ('a1, 'a2, 'a4) iO) -> 'a1 ->
226 ('a2 -> ('a1, 'a2, 'a4) iO) -> ('a3 -> __ -> __ -> 'a5) -> 'a5
228 val eq_to_rel_io__o__io_eq_from_res__o__inject :
229 'a2 Errors.res -> 'a2 -> __ Types.sig0
231 val eq_to_rel_io__o__io_eq_from_res__o__opt_eq_from_res__o__inject :
232 Errors.errmsg -> 'a2 Types.option -> 'a2 -> __ Types.sig0
234 val jmeq_to_eq__o__io_eq_from_res__o__inject :
235 'a2 Errors.res -> 'a2 -> __ Types.sig0
237 val jmeq_to_eq__o__io_eq_from_res__o__opt_eq_from_res__o__inject :
238 Errors.errmsg -> 'a1 Types.option -> 'a1 -> __ Types.sig0
240 val dpi1__o__io_eq_from_res__o__inject :
241 'a2 Errors.res -> 'a2 -> (__, 'a4) Types.dPair -> __ Types.sig0
243 val dpi1__o__io_eq_from_res__o__opt_eq_from_res__o__inject :
244 Errors.errmsg -> 'a1 Types.option -> 'a1 -> (__, 'a4) Types.dPair -> __
247 val eject__o__io_eq_from_res__o__inject :
248 'a2 Errors.res -> 'a2 -> __ Types.sig0 -> __ Types.sig0
250 val eject__o__io_eq_from_res__o__opt_eq_from_res__o__inject :
251 Errors.errmsg -> 'a1 Types.option -> 'a1 -> __ Types.sig0 -> __ Types.sig0
253 val io_eq_from_res__o__opt_eq_from_res__o__inject :
254 Errors.errmsg -> 'a1 Types.option -> 'a1 -> __ Types.sig0
256 val io_eq_from_res__o__inject : 'a2 Errors.res -> 'a2 -> __ Types.sig0
258 val jmeq_to_eq__o__io_monad_eq_from_res__o__inject :
259 'a2 Errors.res -> 'a2 -> __ Types.sig0
261 val jmeq_to_eq__o__io_monad_eq_from_res__o__opt_eq_from_res__o__inject :
262 Errors.errmsg -> 'a1 Types.option -> 'a1 -> __ Types.sig0
264 val dpi1__o__io_monad_eq_from_res__o__inject :
265 'a2 Errors.res -> 'a2 -> (__, 'a4) Types.dPair -> __ Types.sig0
267 val dpi1__o__io_monad_eq_from_res__o__opt_eq_from_res__o__inject :
268 Errors.errmsg -> 'a1 Types.option -> 'a1 -> (__, 'a4) Types.dPair -> __
271 val eject__o__io_monad_eq_from_res__o__inject :
272 'a2 Errors.res -> 'a2 -> __ Types.sig0 -> __ Types.sig0
274 val eject__o__io_monad_eq_from_res__o__opt_eq_from_res__o__inject :
275 Errors.errmsg -> 'a1 Types.option -> 'a1 -> __ Types.sig0 -> __ Types.sig0
277 val io_monad_eq_from_res__o__opt_eq_from_res__o__inject :
278 Errors.errmsg -> 'a1 Types.option -> 'a1 -> __ Types.sig0
280 val io_monad_eq_from_res__o__inject : 'a2 Errors.res -> 'a2 -> __ Types.sig0
282 val eq_to_rel_io__o__io_eq_from_opt__o__inject :
283 Errors.errmsg -> 'a2 Types.option -> 'a2 -> __ Types.sig0
285 val jmeq_to_eq__o__io_eq_from_opt__o__inject :
286 Errors.errmsg -> 'a2 Types.option -> 'a2 -> __ Types.sig0
288 val dpi1__o__io_eq_from_opt__o__inject :
289 Errors.errmsg -> 'a2 Types.option -> 'a2 -> (__, 'a4) Types.dPair -> __
292 val eject__o__io_eq_from_opt__o__inject :
293 Errors.errmsg -> 'a2 Types.option -> 'a2 -> __ Types.sig0 -> __ Types.sig0
295 val io_eq_from_opt__o__inject :
296 Errors.errmsg -> 'a2 Types.option -> 'a2 -> __ Types.sig0
298 val jmeq_to_eq__o__io_monad_eq_from_opt__o__inject :
299 Errors.errmsg -> 'a2 Types.option -> 'a2 -> __ Types.sig0
301 val dpi1__o__io_monad_eq_from_opt__o__inject :
302 Errors.errmsg -> 'a2 Types.option -> 'a2 -> (__, 'a4) Types.dPair -> __
305 val eject__o__io_monad_eq_from_opt__o__inject :
306 Errors.errmsg -> 'a2 Types.option -> 'a2 -> __ Types.sig0 -> __ Types.sig0
308 val io_monad_eq_from_opt__o__inject :
309 Errors.errmsg -> 'a2 Types.option -> 'a2 -> __ Types.sig0