From 3ee1f6ee79b31c77b5704cae755ebe122a5e2e53 Mon Sep 17 00:00:00 2001 From: Jirka Marsik Date: Tue, 28 Oct 2014 17:21:55 +0100 Subject: [PATCH] Added eff-20140928 --- pkgs/development/interpreters/eff/default.nix | 35 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 37 insertions(+) create mode 100644 pkgs/development/interpreters/eff/default.nix diff --git a/pkgs/development/interpreters/eff/default.nix b/pkgs/development/interpreters/eff/default.nix new file mode 100644 index 00000000000..4f2e100c684 --- /dev/null +++ b/pkgs/development/interpreters/eff/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchgit, ocaml, findlib, menhir, which }: + +let inherit (stdenv.lib) getVersion versionAtLeast; in + +assert versionAtLeast (getVersion ocaml) "3.12"; + +stdenv.mkDerivation { + + name = "eff-20140928"; + + src = fetchgit { + url = "https://github.com/matijapretnar/eff.git"; + rev = "90f884a790fddddb51d4d1d3b7c2edf1e8aabb64"; + sha256 = "28e389b35e6959072c245c2e79fe305885b1b2d44ff540a02a097e09e9f9698f"; + }; + + buildInputs = [ ocaml findlib menhir which ]; + + doCheck = true; + checkTarget = "test"; + + meta = with stdenv.lib; { + homepage = "http://www.eff-lang.org"; + description = "A functional programming language based on algebraic effects and their handlers"; + longDescription = '' + Eff is a functional language with handlers of not only exceptions, + but also of other computational effects such as state or I/O. With + handlers, you can simply implement transactions, redirections, + backtracking, multi-threading, and much more... + ''; + license = licenses.bsd2; + platforms = ocaml.meta.platforms; + maintainers = [ maintainers.jirkamarsik ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6dfdec050ed..578a399ebed 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3507,6 +3507,8 @@ let easy-format = callPackage ../development/ocaml-modules/easy-format { }; + eff = callPackage ../development/interpreters/eff { }; + eliom = callPackage ../development/ocaml-modules/eliom { }; findlib = callPackage ../development/tools/ocaml/findlib { };