S-expression parsing library with typed codecs for OCaml
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

sexpt: fix README — Variant uses case0/case1/casev + variant, not make/finish pipeline; mem_opt→opt_mem

+9 -13
+9 -13
README.md
··· 111 111 obj (fun name age email -> { name; age; email }) 112 112 |> mem "name" string ~enc:(fun p -> p.name) 113 113 |> mem "age" int ~enc:(fun p -> p.age) 114 - |> mem_opt "email" string ~enc:(fun p -> p.email) 114 + |> opt_mem "email" string ~enc:(fun p -> p.email) 115 115 |> finish 116 116 ) 117 117 ``` ··· 122 122 type colour = Red | Green | Blue | Rgb of int * int * int 123 123 124 124 let colour_codec = 125 - Variant.( 126 - make (function 127 - | Red -> case0 "Red" 128 - | Green -> case0 "Green" 129 - | Blue -> case0 "Blue" 130 - | Rgb (r, g, b) -> case "Rgb" (triple int int int) (r, g, b)) 131 - |> case0 "Red" (fun () -> Red) 132 - |> case0 "Green" (fun () -> Green) 133 - |> case0 "Blue" (fun () -> Blue) 134 - |> case "Rgb" (triple int int int) (fun (r, g, b) -> Rgb (r, g, b)) 135 - |> finish 136 - ) 125 + Sexpt.Variant.variant [ 126 + Sexpt.Variant.case0 "Red" Red (function Red -> true | _ -> false); 127 + Sexpt.Variant.case0 "Green" Green (function Green -> true | _ -> false); 128 + Sexpt.Variant.case0 "Blue" Blue (function Blue -> true | _ -> false); 129 + Sexpt.Variant.casev "Rgb" (Sexpt.triple Sexpt.int Sexpt.int Sexpt.int) 130 + (fun (r, g, b) -> Rgb (r, g, b)) 131 + (function Rgb (r, g, b) -> Some (r, g, b) | _ -> None); 132 + ] 137 133 ``` 138 134 139 135 ## Dune File Support