xyncro / chiron

JSON for F#
https://xyncro.tech/chiron
MIT License
175 stars 41 forks source link

v7 bind failure? #93

Open haf opened 6 years ago

haf commented 6 years ago
  open Chiron
  open Chiron.Operators
  module D = Json.Decode
  open JsonTransformer

  module JsonResult =
    let inline orElse (a2bR: JsonFailure -> JsonResult<'a>) (aR: JsonResult<'a>): JsonResult<'a> =
      match aR with
      | JPass a -> JsonResult.pass a
      | JFail x -> a2bR x

  module Decoder =
    let inline orElse (f2s2aR: JsonFailure -> Decoder<'s,'a>) (s2aR: Decoder<'s,'a>): Decoder<'s,'a> =
      fun s ->
        s2aR s
        |> JsonResult.orElse (fun f -> f2s2aR f s)