This library aims to collect reusable, general effects-based components we have seen when constructing our proof assistants using OCaml 5. All components here have appeared in various tutorials on algebraic effects; algaeff wraps these well-known components into an OPAM package.
We use semantic versioning. Breaking changes will bump the major version number.
Seq.tEffects-based concurrency (cooperative lightweight threading) was already tackled by other libraries such as Eio and Affect. This library focuses on the rest.
There are a few other useful functions:
continue or discontinue accordingly.You need OCaml 5.
module S = Algaeff.State.Make (Int)
let forty_two = S.run ~init:100 @@ fun () ->
print_int (S.get ()); (* this will print out 100 *)
S.set 42;
S.get ()
OCaml
99.9%
This library aims to collect reusable, general effects-based components we have seen when constructing our proof assistants using OCaml 5. All components here have appeared in various tutorials on algebraic effects; algaeff wraps these well-known components into an OPAM package.
We use semantic versioning. Breaking changes will bump the major version number.
Seq.tEffects-based concurrency (cooperative lightweight threading) was already tackled by other libraries such as Eio and Affect. This library focuses on the rest.
There are a few other useful functions:
continue or discontinue accordingly.You need OCaml 5.
module S = Algaeff.State.Make (Int)
let forty_two = S.run ~init:100 @@ fun () ->
print_int (S.get ()); (* this will print out 100 *)
S.set 42;
S.get ()
OCaml
99.9%