package ppx_deriving_yojson

  1. Overview
  2. Docs
JSON codec generator for OCaml

Install

Dune Dependency

Authors

Maintainers

Sources

ppx_deriving_yojson-3.9.0.tbz
sha256=6745f4f6615c918b0b00296161e0da20c1a6b2b8650bf1b7a5313f94171c4047
sha512=c91a5ce823b1785d071358511b8851bb3ddd3a5cb1ee1e1d3fb95949c6a49d106398ea4bcc7ed9ebb338838ac6280d2128cb574e542c004e3787a0cfafce4a82

doc/src/ppx_deriving_yojson.runtime/ppx_deriving_yojson_runtime.ml.html

Source file ppx_deriving_yojson_runtime.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
include Ppx_deriving_runtime

let (>>=) x f =
  match x with Ok x -> f x | (Error _) as x -> x

let (>|=) x f =
  x >>= fun x -> Ok (f x)

let rec map_bind f acc xs =
  match xs with
  | x :: xs ->
    (* equivalent to [f x >>= fun x -> map_bind f (x :: acc) xs],
       but do not use [(>>=)] to keep [map_bind] tail-recursive
       under js-of-ocaml *)
    (match f x with
     | ((Error _) as err) -> err
     | Ok x -> map_bind f (x :: acc) xs)
  | [] -> Ok (List.rev acc)

type 'a error_or = ('a, string) result

(** [safe_map f l] returns the same value as [List.map f l], but
    computes it tail-recursively so that large list lengths don't
    cause a stack overflow *)
let safe_map f l = List.rev (List.rev_map f l)
OCaml

Innovation. Community. Security.