package GT
Generic programming with extensible transformations
Install
Dune Dependency
Authors
Maintainers
Sources
GT-v0.5.3.tbz
sha256=55f8249e780b9a1891d9d4bb5bf2f4f7fdc619a06d9f6f04961afe193cbaaac4
sha512=3a9422aafb7a4d22c484d03950603e7f05c10512ddeb7675fe5dce73f0ef8f3537eabad1d5ebfb99c6b2e952a6203c793a1cd9d62d2863cef31616a4256b99d2
doc/src/foldr/foldr.ml.html
Source file foldr.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
(* * Generic transformers: plugins. * Copyright (C) 2016-2022 * Dmitrii Kosarev aka Kakadu * St.Petersburg State University, JetBrains Research *) (** {i Foldr} plugin: fold all values in a type. Essentially is a stub that chains inherited attribute thorough all values in the value For type declaration [type ('a,'b,...) typ = ...] it will create a transformation function with type [('s -> 'a -> 's) -> ('s -> 'b -> 's) -> ... -> 's -> ('a,'b,...) typ -> 's ] *) open Ppxlib open GTCommon let trait_name = "foldr" module Make (AstHelpers : GTHELPERS_sig.S) = struct open AstHelpers module Foldl = Foldl.Make (AstHelpers) let trait_name = trait_name class g initial_args tdecls = object (self : 'self) inherit Foldl.g initial_args tdecls method trait_name = trait_name method join_args ~loc do_typ ~init (xs : (string * core_type) list) = ListLabels.fold_left ~f:(fun acc (name, typ) -> Exp.app_list ~loc (do_typ typ) [ acc; Exp.sprintf ~loc "%s" name ]) ~init (List.rev xs) end let create = (new g :> Foldl.P.plugin_constructor) end let register () = Expander.register_plugin trait_name (module Make : Plugin_intf.MAKE) let () = register ()
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>