package yocaml
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
Core engine of the YOCaml Static Site Generator
Install
dune-project
Dependency
Authors
Maintainers
Sources
yocaml-2.0.0.tbz
sha256=fddf61500e828ac88d86ba982084cc817299302082a6e797b36787ff18235ec2
sha512=8b71a8cecd3e101df55eef0bba7a24d4dde9d66b5ecedd9f6d55834fcdc8d33fd875092ca73a398e1715664caee06cdc1bdb1b4da85bff0a687faac5c0445023
doc/src/yocaml/nel.ml.html
Source file nel.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(* YOCaml a static blog generator. Copyright (C) 2024 The Funkyworkers and The YOCaml's developers This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>. *) type 'a t = ( :: ) of ('a * 'a list) let singleton x = [ x ] let cons x (y :: z) = x :: y :: z let init len f = if len < 1 then raise (Invalid_argument "Nel.init") else f 0 :: List.init (pred len) (fun i -> f (succ i)) let from_list = function List.[] -> None | List.(x :: xs) -> Some (x :: xs) let from_seq seq = match seq () with | Seq.Nil -> None | Seq.Cons (x, xs) -> Some (x :: List.of_seq xs) let is_singleton (_ :: xs) = match xs with List.[] -> true | _ -> false let length (_ :: xs) = succ (List.length xs) let to_list (x :: xs) = List.cons x xs let to_seq (x :: xs) = Seq.cons x @@ List.to_seq xs let equal e (x :: xs) (y :: ys) = e x y && List.equal e xs ys let hd (x :: _) = x let tl (_ :: xs) = xs let rev (x :: xs) = let rec aux acc first = function | List.[] -> first :: acc | List.(x :: xs) -> aux (first :: acc) x xs in aux [] x xs let rev_with_length (x :: xs) = let rec aux i acc first = function | List.[] -> (i, first :: acc) | List.(x :: xs) -> aux (succ i) (first :: acc) x xs in aux 0 [] x xs let rev_append (x :: xs) nel2 = let rec aux acc first = function | List.[] -> first :: acc | List.(x :: xs) -> aux (first :: acc) x xs in aux (to_list nel2) x xs let append (x :: xs) ys = x :: List.(append xs (to_list ys)) let concat ((x :: xs) :: rest) = x :: (xs @ List.concat_map to_list rest) let iter f (x :: xs) = let () = f x in List.iter f xs let iteri f (x :: xs) = let () = f 0 x in List.iteri (fun i elt -> f (succ i) elt) xs let map f (x :: xs) = f x :: List.map f xs let mapi f (x :: xs) = f 0 x :: List.mapi (fun i x -> f (succ i) x) xs let rev_map f (x :: xs) = let rec aux acc first = function | List.[] -> first :: acc | List.(x :: xs) -> aux (first :: acc) (f x) xs in aux [] (f x) xs let rev_mapi f (x :: xs) = let rec aux i acc first = function | List.[] -> first :: acc | List.(x :: xs) -> aux (succ i) (first :: acc) (f i x) xs in aux 1 [] (f 0 x) xs let concat_map f nel = concat (map f nel) let flat_map = concat_map let concat_mapi f nel = concat (mapi f nel) let fold_left f default (x :: xs) = List.fold_left f (f default x) xs let fold_right f nel default = List.fold_right f (to_list nel) default let fold_lefti f default (x :: xs) = let rec aux i acc = function | List.[] -> acc | List.(x :: xs) -> aux (succ i) (f i acc x) xs in aux 1 (f 0 default x) xs let fold_righti f nel default = let len, nel = rev_with_length nel in fold_lefti (fun i x acc -> f (len - i) acc x) default nel let pp ?pp_sep pp_elt ppf (x :: xs) = Format.(fprintf ppf "%a" (Format.pp_print_list ?pp_sep pp_elt)) @@ List.cons x xs
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>