opam-version: "2.0"
maintainer: "jun.furuse@gmail.com"
build: [
  ["ocaml" "setup.ml" "-configure" "--prefix" prefix]
  ["ocaml" "setup.ml" "-build"]
]
remove: [
  ["ocaml" "setup.ml" "-configure" "--prefix" prefix]
  ["ocaml" "setup.ml" "-uninstall"]
]
depends: [
  "ocaml" {= "4.02.1"}
  "ocamlfind"
  "omake"
]
install: ["ocaml" "setup.ml" "-install"]
synopsis: "ppx for polymorphic records"
description: """
Polymorphic record in OCaml
=====================================

This ppx adds an extension point `[%poly_record <exp>]` for polymorphic record.

In side `[%poly_record <exp>]`, the record syntax `{ l = e; .. }`, 
`{ e with l = e'; .. }`, `r.l` and `r.l <- e` become for polymorphic records
whose type is `_ Ppx_poly_record.Poly_record.t`. The field information is
encoded into OCaml's object type. For example:

```ocaml
# [%poly_record { x = 1; y = 1.0 }];;
- : < x : int; y : float > Ppx_poly_record.Poly_record.t = <abstr>
```

Implementation of `_ PPx_poly_record.Poly_record.t` is not by OCaml objects:
it has no method table inside therefore safely serializable between different
programs if its fields have no functional value."""
url {
  src: "https://bitbucket.org/camlspotter/ppx_poly_record/get/1.0.0.tar.gz"
  checksum: "md5=143ddde1e09f64d4514070191d7d3bf6"
}
