sig
type ('a, 'b, 'c) work_t
type ('a, 'b, 'c) gate_t
type ('a, 'b, 'c) wire_t
type ('a, 'b, 'c, 'd) guard_t =
(('a, 'b, 'c) Cf_gadget.gate_t, 'd) Cf_cmonad.t
type ('a, 'b, 'c, 'd) t = (('a, 'b, 'c) Cf_gadget.work_t, 'd) Cf_cmonad.t
val eval : ('a, 'b, 'c, unit) Cf_gadget.t -> 'a -> ('b, 'c) Cf_flow.t
val start :
('a, 'b, 'c, unit) Cf_gadget.t -> 'a -> ('d, 'b, 'c, unit) Cf_gadget.t
val guard :
('a, 'b, 'c, unit) Cf_gadget.guard_t -> ('a, 'b, 'c, unit) Cf_gadget.t
val wire : ('a, 'b, 'c, ('d, 'b, 'c) Cf_gadget.wire_t) Cf_gadget.t
val null : ('a, 'b, 'c) Cf_gadget.wire_t
val read : ('a, 'b, 'c, 'b) Cf_gadget.t
val write : 'a -> ('b, 'c, 'a, unit) Cf_gadget.t
val load : ('a, 'b, 'c, 'a) Cf_gadget.t
val store : 'a -> ('a, 'b, 'c, unit) Cf_gadget.t
val modify : ('a -> 'a) -> ('a, 'b, 'c, unit) Cf_gadget.t
class type connector = object method check : bool method id : string end
class ['a, 'b, 'c] rx :
('a, 'b, 'c) Cf_gadget.wire_t ->
object
method check : bool
method get :
('a -> ('d, 'b, 'c, unit) Cf_gadget.t) ->
('d, 'b, 'c, unit) Cf_gadget.guard_t
method id : string
end
class ['a, 'b, 'c] tx :
('a, 'b, 'c) Cf_gadget.wire_t ->
object
method check : bool
method id : string
method put : 'a -> ('d, 'b, 'c, unit) Cf_gadget.t
end
type ('a, 'b, 'c) simplex_t =
('a, 'b, 'c) Cf_gadget.rx * ('a, 'b, 'c) Cf_gadget.tx
val fsimplex :
f:(('a, 'b, 'c) Cf_gadget.wire_t ->
('a, 'b, 'c) #Cf_gadget.rx * ('a, 'b, 'c) #Cf_gadget.tx) ->
('d, 'b, 'c, ('a, 'b, 'c) Cf_gadget.rx * ('a, 'b, 'c) Cf_gadget.tx)
Cf_gadget.t
val simplex :
('a, 'b, 'c, ('d, 'b, 'c) Cf_gadget.rx * ('d, 'b, 'c) Cf_gadget.tx)
Cf_gadget.t
type ('a, 'b, 'c, 'd) duplex_t =
(('a, 'c, 'd) Cf_gadget.rx * ('b, 'c, 'd) Cf_gadget.tx) *
(('b, 'c, 'd) Cf_gadget.rx * ('a, 'c, 'd) Cf_gadget.tx)
val duplex : ('a, 'b, 'c, ('d, 'e, 'b, 'c) Cf_gadget.duplex_t) Cf_gadget.t
val wrap :
('a, 'b, 'c) #Cf_gadget.rx ->
('d, 'b, 'c) #Cf_gadget.tx ->
('a, 'd) Cf_flow.t -> ('e, 'b, 'c, unit) Cf_gadget.t
end