Eff (programming language)

Eff is a general-purpose, high-level, multi-paradigm, functional programming language similar in syntax to OCaml which integrates the functions of algebraic effect handlers.[1][2]

Eff
ParadigmsMulti-paradigm: functional, imperative
FamilyML: Caml: OCaml
Designed byAndrej Bauer, Matija Pretnar
First appearedMarch 5, 2012; 12 years ago (2012-03-05)
Stable release
5.1 / October 19, 2021; 3 years ago (2021-10-19)
Implementation languageOCaml
Platformx86-64
OSCross-platform: macOS, Linux, Windows
LicenseBSD 2-clause
Websitewww.eff-lang.org
Influenced by
OCaml

Example

edit
effect Get_next : (unit -> unit) option
effect Add_to_queue : (unit -> unit) -> unit

let queue initial = handler
  | effect Get_next k ->
    ( fun queue -> match queue with
        | [] -> (continue k None) []
        | hd::tl -> (continue k (Some hd)) tl )
  | effect (Add_to_queue y) k -> ( fun queue -> (continue k ()) (queue @ [y]))
  | x -> ( fun _ -> x)
  | finally x -> x initial
;;

References

edit
  1. ^ "Eff Programming Language". Eff-lang.org. Retrieved 2019-11-18.
  2. ^ Bauer, Andrej; Pretnar, Matija (March 2012). Programming with Algebraic Effects and Handlers (PDF) (Report). Department of Mathematics and Physics, University of Ljubljana, Slovenia.
edit