1{
2 lib,
3 fetchFromGitHub,
4 ocamlPackages,
5}:
6
7let
8 inherit (ocamlPackages) buildDunePackage js_of_ocaml menhir;
9in
10
11buildDunePackage rec {
12 pname = "eff";
13 version = "5.1";
14
15 src = fetchFromGitHub {
16 owner = "matijapretnar";
17 repo = "eff";
18 rev = "v${version}";
19 hash = "sha256-0U61y41CA0YaoNk9Hsj7j6eb2V6Ku3MAjW9lMEimiC0=";
20 };
21
22 nativeBuildInputs = [ menhir ];
23
24 buildInputs = [ js_of_ocaml ];
25
26 doCheck = true;
27
28 meta = with lib; {
29 homepage = "https://www.eff-lang.org";
30 description = "Functional programming language based on algebraic effects and their handlers";
31 mainProgram = "eff";
32 longDescription = ''
33 Eff is a functional language with handlers of not only exceptions,
34 but also of other computational effects such as state or I/O. With
35 handlers, you can simply implement transactions, redirections,
36 backtracking, multi-threading, and much more...
37 '';
38 license = licenses.bsd2;
39 maintainers = [ maintainers.jirkamarsik ];
40 };
41}