@@ -228,6 +228,7 @@ data Val a
228
228
| VPrefer ! (Val a ) ! (Val a )
229
229
| VMerge ! (Val a ) ! (Val a ) ! (Maybe (Val a ))
230
230
| VToMap ! (Val a ) ! (Maybe (Val a ))
231
+ | VShowConstructor ! (Val a )
231
232
| VField ! (Val a ) ! Text
232
233
| VInject ! (Map Text (Maybe (Val a ))) ! Text ! (Maybe (Val a ))
233
234
| VProject ! (Val a ) ! (Either (Set Text ) (Val a ))
@@ -807,6 +808,14 @@ eval !env t0 =
807
808
in VListLit Nothing s
808
809
(x', ma') ->
809
810
VToMap x' ma'
811
+ ShowConstructor x ->
812
+ case eval env x of
813
+ VInject m k _
814
+ | Just _ <- Map. lookup k m -> VTextLit (VChunks [] k)
815
+ | otherwise -> error errorMsg
816
+ VSome _ -> VTextLit (VChunks [] " Some" )
817
+ VNone _ -> VTextLit (VChunks [] " None" )
818
+ x' -> VShowConstructor x'
810
819
Field t (Syntax. fieldSelectionLabel -> k) ->
811
820
vField (eval env t) k
812
821
Project t (Left ks) ->
@@ -1033,6 +1042,8 @@ conv !env t0 t0' =
1033
1042
conv env t t' && conv env u u'
1034
1043
(VToMap t _, VToMap t' _) ->
1035
1044
conv env t t'
1045
+ (VShowConstructor t, VShowConstructor t') ->
1046
+ conv env t t'
1036
1047
(VField t k, VField t' k') ->
1037
1048
conv env t t' && k == k'
1038
1049
(VProject t (Left ks), VProject t' (Left ks')) ->
@@ -1243,6 +1254,8 @@ quote !env !t0 =
1243
1254
Merge (quote env t) (quote env u) (fmap (quote env) ma)
1244
1255
VToMap t ma ->
1245
1256
ToMap (quote env t) (fmap (quote env) ma)
1257
+ VShowConstructor t ->
1258
+ ShowConstructor (quote env t)
1246
1259
VField t k ->
1247
1260
Field (quote env t) $ Syntax. makeFieldSelection k
1248
1261
VProject t p ->
@@ -1442,6 +1455,8 @@ alphaNormalize = goEnv EmptyNames
1442
1455
Merge (go x) (go y) (fmap go ma)
1443
1456
ToMap x ma ->
1444
1457
ToMap (go x) (fmap go ma)
1458
+ ShowConstructor x ->
1459
+ ShowConstructor (go x)
1445
1460
Field t k ->
1446
1461
Field (go t) k
1447
1462
Project t ks ->
0 commit comments