summaryrefslogtreecommitdiff
path: root/lib/ur/json.urs
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adam@chlipala.net>2019-10-11 15:06:18 -0400
committerGravatar Adam Chlipala <adam@chlipala.net>2019-10-11 15:06:18 -0400
commitf7b684dbdae9229a69258a7e575395af120d2654 (patch)
tree77fa2f81ea0456347baf757a8eabd65b6ac287ae /lib/ur/json.urs
parent56bb940f305fb3d32cc218a6dbc8fa1b1fd7ef89 (diff)
JSON records with optional fields
Diffstat (limited to 'lib/ur/json.urs')
-rw-r--r--lib/ur/json.urs4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/ur/json.urs b/lib/ur/json.urs
index b4bd6350..56f5a897 100644
--- a/lib/ur/json.urs
+++ b/lib/ur/json.urs
@@ -17,6 +17,10 @@ val json_option : a ::: Type -> json a -> json (option a)
val json_list : a ::: Type -> json a -> json (list a)
val json_record : ts ::: {Type} -> folder ts -> $(map json ts) -> $(map (fn _ => string) ts) -> json $ts
+val json_record_withOptional : ts ::: {Type} -> ots ::: {Type} -> [ts ~ ots]
+ => folder ts -> $(map json ts) -> $(map (fn _ => string) ts)
+ -> folder ots -> $(map json ots) -> $(map (fn _ => string) ots)
+ -> json $(ts ++ map option ots)
val json_variant : ts ::: {Type} -> folder ts -> $(map json ts) -> $(map (fn _ => string) ts) -> json (variant ts)
val json_unit : json unit