sig
type ('a, 'b) t
val return : 'a -> ('a, 'b) Duppy.Monad.t
val raise : 'a -> ('b, 'a) Duppy.Monad.t
val bind :
('a, 'b) Duppy.Monad.t ->
('a -> ('c, 'b) Duppy.Monad.t) -> ('c, 'b) Duppy.Monad.t
val ( >>= ) :
('a, 'b) Duppy.Monad.t ->
('a -> ('c, 'b) Duppy.Monad.t) -> ('c, 'b) Duppy.Monad.t
val run :
return:('a -> unit) ->
raise:('b -> unit) -> ('a, 'b) Duppy.Monad.t -> unit
val catch :
('a, 'b) Duppy.Monad.t ->
('b -> ('a, 'c) Duppy.Monad.t) -> ('a, 'c) Duppy.Monad.t
val ( =<< ) :
('a -> ('b, 'c) Duppy.Monad.t) ->
('b, 'a) Duppy.Monad.t -> ('b, 'c) Duppy.Monad.t
val fold_left :
('a -> 'b -> ('a, 'c) Duppy.Monad.t) ->
'a -> 'b list -> ('a, 'c) Duppy.Monad.t
val iter :
('a -> (unit, 'b) Duppy.Monad.t) -> 'a list -> (unit, 'b) Duppy.Monad.t
module Mutex :
sig
type mutex
val create :
priority:'a -> 'a Duppy.scheduler -> Duppy.Monad.Mutex.mutex
val lock : Duppy.Monad.Mutex.mutex -> (unit, 'a) Duppy.Monad.t
val try_lock : Duppy.Monad.Mutex.mutex -> (bool, 'a) Duppy.Monad.t
val unlock : Duppy.Monad.Mutex.mutex -> (unit, 'a) Duppy.Monad.t
end
module Condition :
sig
type condition
val create :
priority:'a -> 'a Duppy.scheduler -> Duppy.Monad.Condition.condition
val wait :
Duppy.Monad.Condition.condition ->
Duppy.Monad.Mutex.mutex -> (unit, 'a) Duppy.Monad.t
val broadcast :
Duppy.Monad.Condition.condition -> (unit, 'a) Duppy.Monad.t
val signal :
Duppy.Monad.Condition.condition -> (unit, 'a) Duppy.Monad.t
end
module Io :
sig
type ('a, 'b) handler = {
scheduler : 'a Duppy.scheduler;
socket : Unix.file_descr;
mutable data : string;
on_error : Duppy.Io.failure -> 'b;
}
val exec :
?delay:float ->
priority:'a ->
('a, 'b) Duppy.Monad.Io.handler ->
('c, 'b) Duppy.Monad.t -> ('c, 'b) Duppy.Monad.t
val delay :
priority:'a ->
('a, 'b) Duppy.Monad.Io.handler -> float -> (unit, 'b) Duppy.Monad.t
val read :
priority:'a ->
marker:Duppy.Io.marker ->
('a, 'b) Duppy.Monad.Io.handler -> (string, 'b) Duppy.Monad.t
val read_all :
priority:'a ->
'a Duppy.scheduler ->
Unix.file_descr -> (string, string * Duppy.Io.failure) Duppy.Monad.t
val write :
priority:'a ->
('a, 'b) Duppy.Monad.Io.handler -> string -> (unit, 'b) Duppy.Monad.t
val write_bigarray :
priority:'a ->
('a, 'b) Duppy.Monad.Io.handler ->
Duppy.Io.bigarray -> (unit, 'b) Duppy.Monad.t
end
end