summary refs log tree commit diff
path: root/pkgs/development/interpreters/eff/default.nix
blob: 88490e9cd9c6b340778f99129c3b3f2f131a5fd7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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 or [];
    maintainers = [ maintainers.jirkamarsik ];
  };
}