package ppxlib

  1. Overview
  2. Docs
Base library and tools for ppx rewriters

Install

Dune Dependency

Authors

Maintainers

Sources

0.8.0.tar.gz
sha256=22c3989affe54df7681603d76b26edb923f5d02bec5b3959729dd133e9fc79e2
md5=9b1cfe1ae58d7ad851ed5618c1bf64a0

Description

A comprehensive toolbox for ppx development. It features:

  • a OCaml AST / parser / pretty-printer snapshot,to create a full frontend independent of the version of OCaml;
  • a library for library for ppx rewriters in general, and type-driven code generators in particular;
  • a feature-full driver for OCaml AST transformers;
  • a quotation mechanism allowing to write values representing the OCaml AST in the OCaml syntax;
  • a generator of open recursion classes from type definitions.

Published: 28 May 2019

README

Ppxlib - Meta-programming for OCaml

Overview

The ppxlib project provides the basis for the ppx system, which is currently the officially supported method for meta-programming in OCaml. It offers a principled way to generate code at compile time in OCaml projects.

Ppxlib comes with a user manual aimed at both users and authors of ppx rewriters.

History

This repository was created by merging several older projects. See the history for more details.

Dependencies (7)

  1. stdio >= "v0.11.0"
  2. ppx_derivers >= "1.0"
  3. ocaml-migrate-parsetree >= "1.3.1" & < "2.0.0"
  4. ocaml-compiler-libs >= "v0.11.0"
  5. dune
  6. base >= "v0.11.0"
  7. ocaml >= "4.04.1" & < "4.10"

Dev Dependencies (1)

  1. ocamlfind with-test

  1. arrayjit
  2. base_quickcheck < "v0.13.0"
  3. bistro = "0.5.0"
  4. cconv-ppx
  5. clangml = "4.0.0"
  6. comby < "1.3.0"
  7. core >= "v0.11.1" & < "v0.12.0"
  8. elpi = "1.11.0"
  9. embedded_ocaml_templates < "0.8"
  10. fieldslib = "v0.11.0"
  11. frenetic = "5.0.3"
  12. GT >= "0.5.2"
  13. genprint
  14. hack_parallel
  15. js_of_ocaml-ppx_deriving_json >= "3.5.0" & < "3.5.2"
  16. lablqml >= "0.6" & < "0.7"
  17. learn-ocaml >= "0.13.0"
  18. learn-ocaml-client >= "0.13.0"
  19. let-if
  20. logs-ppx
  21. melange-json >= "1.2.0"
  22. merlin >= "4.7-412"
  23. mlt_parser = "v0.12.0"
  24. neural_nets_lib
  25. noCanren >= "0.3.0~alpha1"
  26. node_of_ocaml
  27. noise
  28. OCanren-ppx < "0.2.0"
  29. obus = "1.2.0"
  30. ocamlapi_ppx
  31. octez-internal-libs
  32. ojs_base_ppx
  33. override < "0.2.2"
  34. parsexp_io = "v0.11.0"
  35. pattern < "0.1.1"
  36. ppx-owl-opt
  37. ppx_assert >= "v0.11.0" & < "v0.13.0"
  38. ppx_base >= "v0.11.0" & < "v0.13.0"
  39. ppx_bench >= "v0.11.0" & < "v0.13.0"
  40. ppx_bin_prot = "v0.11.1" | = "v0.12.1"
  41. ppx_blob = "0.7.2"
  42. ppx_bsx
  43. ppx_compare >= "v0.11.1" & < "v0.13.0"
  44. ppx_compose >= "0.2.1"
  45. ppx_conv_func >= "v0.11.0" & < "v0.13.0"
  46. ppx_csv_conv >= "v0.11.1" & < "v0.13.0"
  47. ppx_custom_printf >= "v0.11.0" & < "v0.13.0"
  48. ppx_deriving_encoding < "0.2" | = "0.2.3"
  49. ppx_deriving_hardcaml = "v0.12.0"
  50. ppx_deriving_hash
  51. ppx_deriving_jsoo < "0.2"
  52. ppx_deriving_rpc >= "6.0.0" & < "7.1.0"
  53. ppx_dream_eml
  54. ppx_enum
  55. ppx_enumerate >= "v0.11.1" & < "v0.13.0"
  56. ppx_expect >= "v0.11.0" & < "v0.13.0"
  57. ppx_factory < "0.1.0"
  58. ppx_fail >= "v0.11.0" & < "v0.13.0"
  59. ppx_fields_conv >= "v0.11.0" & < "v0.13.0"
  60. ppx_fun >= "0.0.9"
  61. ppx_hash >= "v0.11.1" & < "v0.13.0"
  62. ppx_here >= "v0.11.0" & < "v0.13.0"
  63. ppx_import >= "1.5-3-gbd627d5" & < "1.8.0"
  64. ppx_inline_test >= "v0.11.0" & < "v0.13.0"
  65. ppx_jane >= "v0.11.0" & < "v0.13.0"
  66. ppx_js_style >= "v0.11.0" & < "v0.13.0"
  67. ppx_jsobject_conv >= "0.6.0" & < "0.8.0"
  68. ppx_let >= "v0.11.0" & < "v0.13.0"
  69. ppx_module_timer < "v0.13.0"
  70. ppx_mysql >= "1.1"
  71. ppx_optcomp >= "v0.11.0" & < "v0.13.0"
  72. ppx_optint
  73. ppx_optional >= "v0.11.0" & < "v0.13.0"
  74. ppx_pipebang >= "v0.11.0" & < "v0.13.0"
  75. ppx_protocol_conv >= "3.1.0" & < "5.1.0"
  76. ppx_python < "v0.13.0"
  77. ppx_rapper
  78. ppx_relit >= "0.2.0"
  79. ppx_sexp_conv >= "v0.11.2" & < "v0.13.0"
  80. ppx_sexp_message >= "v0.11.0" & < "v0.13.0"
  81. ppx_sexp_value >= "v0.11.0" & < "v0.13.0"
  82. ppx_show < "0.2.0"
  83. ppx_stable < "v0.13.0"
  84. ppx_string_interpolation < "1.0.1"
  85. ppx_there
  86. ppx_type_conv >= "v0.11.0"
  87. ppx_typerep_conv >= "v0.11.1" & < "v0.13.0"
  88. ppx_variants_conv >= "v0.11.1" & < "v0.13.0"
  89. ppx_xml_conv >= "v0.11.0" & < "v0.13.0"
  90. ppx_yojson < "1.1.0"
  91. ppx_yojson_conv < "v0.13.0"
  92. pythonlib < "v0.13.0"
  93. qcow >= "0.11.0"
  94. relit_helper >= "0.2.0"
  95. res_tailwindcss
  96. speed
  97. spin >= "0.8.0"
  98. stdint-literals
  99. stk_ppx
  100. toplevel_expect_test >= "v0.12.1" & < "v0.13.0"
  101. variantslib = "v0.11.0"

Conflicts

None

OCaml

Innovation. Community. Security.