Module type Reins.DugADT.S


module type S = sig .. end

type ('a, 'b) generator 
functions that return a container and none of its arguments are containers
type ('a, 'b) mutator 
functions that return a container and at least one arg is a container
type ('a, 'b) observer 
functions that do not return a container, but takes one as an argument
type ('a, 'b) op 
One of
val op_to_string : ('a, 'b) op -> string
val coerce_gen : ('a, 'b) generator -> ('a, 'b) op
val coerce_mut : ('a, 'b) mutator -> ('a, 'b) op
val coerce_obs : ('a, 'b) observer -> ('a, 'b) op
val classify : ('a, 'b) op ->
(('a, 'b) generator, ('a, 'b) mutator,
('a, 'b) observer)
Reins.Dug.kind
val strip : ('a, 'b) op -> (unit, unit) op
val op_dependencies : ('a, Dug.Id.t) op -> Dug.Id.t list
val create_op : (unit, unit) op ->
Dug.Id.t ->
(unit -> 'a) -> (int -> Dug.Id.t) -> ('a, Dug.Id.t) op