feat: simulation start

This commit is contained in:
Henri Saudubray 2025-04-15 15:32:26 +02:00
parent f90206e57e
commit 391e350315
Signed by: hms
GPG key ID: 7065F57ED8856128
18 changed files with 305 additions and 5 deletions

26
src/lib/common/monad.ml Normal file
View file

@ -0,0 +1,26 @@
module type Monad = sig
type 'a t
val return : 'a -> 'a t
val bind : 'a t -> ('a -> 'b t) -> 'b t
end
module type FullMonad = sig
type 'a t
val return : 'a -> 'a t
val bind : 'a t -> ('a -> 'b t) -> 'b t
val (>>=) : 'a t -> ('a -> 'b t) -> 'b t
val (let*) : 'a t -> ('a -> 'b t) -> 'b t
val join : 'a t t -> 'a t
end
module Expand (M : Monad) = struct
include M
let (>>=) = M.bind
let (let*) = M.bind
let join m = M.bind m (fun m -> m)
end