package caqti
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
Unified interface to relational database libraries
Install
dune-project
Dependency
Authors
Maintainers
Sources
caqti-v2.3.2.tbz
sha256=8f6c1724b59ac22a5c657c9e53b9a1706e39ecd462e82958b0cea88e43f0aba7
sha512=75b968ab37ae94cadcaabbcce0f91b1ffa4334ed69e441bdeb823077eb7675264282efb0fab3baaaad446582cfb427769e19f22c8c194a316ac2248c3fba5cf8
doc/src/caqti.platform/fiber_utils.ml.html
Source file fiber_utils.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(* Copyright (C) 2025--2026 Petter A. Urkedal <paurkedal@gmail.com> * * This library is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at your * option) any later version, with the LGPL-3.0 Linking Exception. * * This library 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 Lesser General Public * License for more details. * * You should have received a copy of the GNU Lesser General Public License * and the LGPL-3.0 Linking Exception along with this library. If not, see * <http://www.gnu.org/licenses/> and <https://spdx.org>, respectively. *) module Make (Fiber : System_sig.FIBER) = struct include Fiber.Infix let ( let* ) = (>>=) let ( let+ ) = (>|=) let ( >>=? ) m f = m >>= function Ok x -> f x | Error _ as r -> Fiber.return r let ( >|=? ) m f = m >|= function Ok x -> Ok (f x) | Error _ as r -> r let ( let*? ) = ( >>=? ) let ( let+? ) = ( >|=? ) let assert_single_use ~what in_use f = if !in_use then failwith ("Invalid concurrent usage of " ^ what ^ " detected."); in_use := true; Fiber.cleanup (fun () -> f () >|= fun res -> in_use := false; res) (fun () -> in_use := false; Fiber.return ()) let rec iter_s_list f = function | [] -> Fiber.return () | x :: xs -> f x >>= fun () -> iter_s_list f xs let rec iter_rs_list f = function | [] -> Fiber.return (Ok ()) | x :: xs -> f x >>=? fun () -> iter_rs_list f xs let map_rs_list f = let rec loop acc = function | [] -> Fiber.return (Ok (List.rev acc)) | x :: xs -> let*? y = f x in loop (y :: acc) xs in loop [] end
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>