package GT
Generic programming with extensible transformations
Install
Dune Dependency
Authors
Maintainers
Sources
0.5.0.tar.gz
sha256=3f26c69a215066b42c6edde2ea4cd4516bdc9a01482b64355d3adf87ed85e179
sha512=7a5236618124f370aa373483255bd3efeb5c251005efa7d43aadb6be968df310b5f312b8066245544cfdf9972a7944f0ff2448bd09cb8a8e0bb5f8b1f9b5340b
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 51 52 53 54 55 56 57
(* * Generic transformers: plugins. * Copyright (C) 2016-2019 * 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 Base 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) = List.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)"
>