mattjbray / ocaml-decoders

Elm-inspired decoders for Ocaml
https://mattjbray.github.io/ocaml-decoders/
Other
84 stars 8 forks source link

doc(examples): consider using ppx let #31

Closed wongjiahau closed 3 years ago

wongjiahau commented 3 years ago

Instead of:

type my_user =
  { name : string
  ; age : int
  }

let my_user_decoder : my_user decoder =
  let open D in
  field "name" string >>= fun name ->
  field "age" int >>= fun age ->
  succeed { name; age }

We can improve the readability using ppx_let:

type my_user =
  { name : string
  ; age : int
  }

let my_user_decoder : my_user decoder =
  let open D in
  let%bind name = field "name" string in
  let%bind age = field "age" int in
  succeed { name; age }
mattjbray commented 3 years ago

Good idea. Actually, since decoders 0.5.0, and provided you're on OCaml >= 4.08, you can use let operators without the need for any ppx:

let my_user_decoder : my_user decoder =
  let open D in
  let* name = field "name" string in
  let* age = field "age" int in
  succeed { name; age }

I'll update the README to use that syntax.