generic-data VS ppx_deriving

Compare generic-data vs ppx_deriving and see what are their differences.

generic-data

Generic data types in Haskell, utilities for GHC.Generics (by Lysxia)

ppx_deriving

Type-driven code generation for OCaml (by ocaml-ppx)
Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
generic-data ppx_deriving
- 7
44 440
- 2.3%
4.1 7.0
27 days ago 7 days ago
Haskell OCaml
MIT License MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

generic-data

Posts with mentions or reviews of generic-data. We have used some of these posts to build our list of alternatives and similar projects.

We haven't tracked posts mentioning generic-data yet.
Tracking mentions began in Dec 2020.

ppx_deriving

Posts with mentions or reviews of ppx_deriving. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-04-25.
  • My Thoughts on OCaml
    11 projects | news.ycombinator.com | 25 Apr 2023
    > You gave a beautiful answer about programming language

    You do the same thing as in Rust, Scala or Haskell and derive the printer [1]. Then at the callsite, if you know the type then you do `T.show` to print it or `T.eq`. If you don't know the type, then you pass it in at the top level as a module and then do `T.show` or `T.eq`.

    > Or to convert one type into another type?

    If you want to convert a type, then you have a type that you want to convert from such as foo and bar, then you do `Foo.to_bar value`.

    We can keep going, but you can get the point.

    You _can't_ judge a language by doing what you want to do with one language in another. If I judge Rust by writing recursive data structures and complaining about performance and verbosity that's not particularly fair correct? I can't say that Dart is terrible for desktop because I can't use chrome developer tools on its canvas output and ignore it's hot-reloading server. I can't say Common Lisp code is unreadable because I don't have type annotations and ignore the REPL for introspection.

    [1] https://github.com/ocaml-ppx/ppx_deriving

  • Is rust serde unique?
    6 projects | /r/rust | 19 Apr 2023
    Ocaml has the amazing ppx_deriving which can be used for serialization / deserialization in various formats.
  • Question on type declaration syntax
    2 projects | /r/ocaml | 17 Apr 2023
    I wrote a CLI tool and I'd like to produce statically linked binaries of my tool. However, I cannot do this because I'm using the ppx_deriving deriving preprocessor, and I cannot produce a statically linked executable while using this package.
  • OCaml at First Glance
    5 projects | news.ycombinator.com | 29 Aug 2022
    Not great, not terrible; the language supports annotations which mean nothing to the compiler but which pre-processors can take advantage of, and there is a framework called ppx which you can use to write your own preprocessor. There exist many pre-processors to do things like add inline tests, generate getter/setter/pretty-printing functions, and so on. Here is an example:

    https://github.com/ocaml-ppx/ppx_deriving

  • Bad documentation of Jane Street libraries
    3 projects | /r/ocaml | 23 Mar 2022
    is from https://github.com/ocaml-ppx/ppx_deriving
  • Recommended method for pretty-printing collections in Core?
    2 projects | /r/ocaml | 9 Oct 2021
    Have you tried to derive a print function using https://github.com/ocaml-ppx/ppx_deriving
  • How do I define ordering for my sum types?
    1 project | /r/ocaml | 27 Apr 2021
    However, there is a ppx (a pre-processor) which can do the job : ppx_deriving. You just have to anotate your type in oder to get the compare function automatically generated :

What are some alternatives?

When comparing generic-data and ppx_deriving you can also consider the following projects:

generic-data-surgery - Surgery for generic data types

deriving-show-simple

no-role-annots - Role annotations without -XRoleAnnotations

ppx_jane - Standard Jane Street ppx rewriters

first-class-families - First-class type families

ppx_sexp_conv - Generation of S-expression conversion functions from type definitions

json-serde - Example of usage antlr4 and shapeless

hyperloglogplus - Haskell implementation of HyperLogLog++ & MinHash for efficient cardinality and intersection estimation

goderive - Derives and generates mundane golang functions that you do not want to maintain yourself

hdiff - Hash-based Diffing for AST's

base - Standard library for OCaml