···11+{ stdenv, fetchgit, ocaml, findlib, menhir, which }:
22+33+let inherit (stdenv.lib) getVersion versionAtLeast; in
44+55+assert versionAtLeast (getVersion ocaml) "3.12";
66+77+stdenv.mkDerivation {
88+99+ name = "eff-20140928";
1010+1111+ src = fetchgit {
1212+ url = "https://github.com/matijapretnar/eff.git";
1313+ rev = "90f884a790fddddb51d4d1d3b7c2edf1e8aabb64";
1414+ sha256 = "28e389b35e6959072c245c2e79fe305885b1b2d44ff540a02a097e09e9f9698f";
1515+ };
1616+1717+ buildInputs = [ ocaml findlib menhir which ];
1818+1919+ doCheck = true;
2020+ checkTarget = "test";
2121+2222+ meta = with stdenv.lib; {
2323+ homepage = "http://www.eff-lang.org";
2424+ description = "A functional programming language based on algebraic effects and their handlers";
2525+ longDescription = ''
2626+ Eff is a functional language with handlers of not only exceptions,
2727+ but also of other computational effects such as state or I/O. With
2828+ handlers, you can simply implement transactions, redirections,
2929+ backtracking, multi-threading, and much more...
3030+ '';
3131+ license = licenses.bsd2;
3232+ platforms = ocaml.meta.platforms;
3333+ maintainers = [ maintainers.jirkamarsik ];
3434+ };
3535+}