1{ stdenv, fetchFromGitHub, ocaml, findlib, jbuilder, qtest, result }:
2
3if !stdenv.lib.versionAtLeast ocaml.version "4.02"
4then throw "sequence is not available for OCaml ${ocaml.version}"
5else
6
7let version = "1.1"; in
8
9stdenv.mkDerivation {
10 name = "ocaml${ocaml.version}-sequence-${version}";
11
12 src = fetchFromGitHub {
13 owner = "c-cube";
14 repo = "sequence";
15 rev = version;
16 sha256 = "08j37nldw47syq3yw4mzhhvya43knl0d7biddp0q9hwbaxhzgi44";
17 };
18
19 buildInputs = [ ocaml findlib jbuilder qtest ];
20 propagatedBuildInputs = [ result ];
21
22 doCheck = true;
23 checkPhase = "jbuilder runtest";
24
25 inherit (jbuilder) installPhase;
26
27 meta = {
28 homepage = https://github.com/c-cube/sequence;
29 description = "Simple sequence (iterator) datatype and combinators";
30 longDescription = ''
31 Simple sequence datatype, intended to transfer a finite number of
32 elements from one data structure to another. Some transformations on sequences,
33 like `filter`, `map`, `take`, `drop` and `append` can be performed before the
34 sequence is iterated/folded on.
35 '';
36 license = stdenv.lib.licenses.bsd2;
37 platforms = ocaml.meta.platforms or [];
38 };
39}