package irmin
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
Irmin, a distributed database that follows the same design principles as Git
Install
dune-project
Dependency
Authors
Maintainers
Sources
irmin-2.10.2.tbz
sha256=088741b619471c8198e74aaf9f4aeb4a9997abec8b9abcbfb3443fd27bfb433f
sha512=bbc03417d6eb87d99bee391c489d23a586b0a260e4c797f5e2465c3ab67cb627a9efa526097c1b89dd3339eafb8bad738c1cf0502e5c70355871ff7dbba324b9
doc/src/irmin/import.ml.html
Source file import.ml
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123(* * Copyright (c) 2021 Craig Ferguson <craig@tarides.com> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. *) (* Extensions to the default namespace, opened throughout the Irmin codebase. *) type read = Perms.read type write = Perms.write type read_write = Perms.read_write (** {2 Lwt syntax} *) let ( >>= ) = Lwt.Infix.( >>= ) let ( >|= ) = Lwt.Infix.( >|= ) let ( let* ) = ( >>= ) let ( let+ ) = ( >|= ) (** {2 Dependency extensions} *) module Option = struct include Option (** @closed *) let of_result = function Ok x -> Some x | Error _ -> None end module List = struct include List (** @closed *) let rec is_longer_than : type a. int -> a list -> bool = fun len l -> if len < 0 then true else match l with [] -> false | _ :: tl -> is_longer_than (len - 1) tl let map f l = let rec aux acc = function | [] -> acc [] | h :: t -> (aux [@tailcall]) (fun t' -> acc (f h :: t')) t in aux (fun x -> x) l let concat l = let rec aux acc curr l = match (curr, l) with | [], [] -> List.rev acc | [], [ l ] -> List.rev_append acc l | [], h :: t -> (aux [@tailcall]) acc h t | h :: t, l -> (aux [@tailcall]) (h :: acc) t l in aux [] [] l let concat_map f l = let rec aux f acc = function | [] -> rev acc | x :: l -> let xs = f x in aux f (rev_append xs acc) l in aux f [] l end module Seq = struct include Seq (** @closed *) let rec drop : type a. int -> a t -> a t = fun n l () -> match l () with | l' when n = 0 -> l' | Nil -> Nil | Cons (_, l') -> drop (n - 1) l' () let exists : type a. (a -> bool) -> a Seq.t -> bool = fun f s -> let rec aux s = match s () with Seq.Nil -> false | Seq.Cons (v, s) -> f v || aux s in aux s let rec take : type a. int -> a t -> a t = fun n l () -> if n = 0 then Nil else match l () with Nil -> Nil | Cons (x, l') -> Cons (x, take (n - 1) l') let for_all : type a. (a -> bool) -> a Seq.t -> bool = fun f s -> let rec aux s = match s () with Seq.Nil -> true | Seq.Cons (v, s) -> f v && aux s in aux s (* For compatibility with versions older than ocaml.4.11.0 *) let rec append seq1 seq2 () = match seq1 () with | Nil -> seq2 () | Cons (x, next) -> Cons (x, append next seq2) end let shuffle state arr = let rec aux n = if n > 1 then ( let k = Random.State.int state (n + 1) in let temp = arr.(n) in arr.(n) <- arr.(k); arr.(k) <- temp; aux (n - 1)) in let len = Array.length arr in aux (len - 1); ()
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>