summaryrefslogtreecommitdiff
path: root/src/elab_util.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2008-08-14 18:35:08 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2008-08-14 18:35:08 -0400
commit7bdc4cabdb8e5efbc4a194fe0bfe9442c7644798 (patch)
treece4be93140bacbd8900ff57affd5f866fbbf3ad0 /src/elab_util.sml
parent5c9a5278b49ccf481468d5a766a8c4ab0cde2658 (diff)
Non-star SELECT
Diffstat (limited to 'src/elab_util.sml')
-rw-r--r--src/elab_util.sml15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/elab_util.sml b/src/elab_util.sml
index 3c1860c7..b0bca7bf 100644
--- a/src/elab_util.sml
+++ b/src/elab_util.sml
@@ -68,6 +68,11 @@ fun mapfold f =
| KUnit => S.return2 kAll
+ | KTuple ks =>
+ S.map2 (ListUtil.mapfold mfk ks,
+ fn ks' =>
+ (KTuple ks', loc))
+
| KError => S.return2 kAll
| KUnif (_, _, ref (SOME k)) => mfk' k
@@ -180,6 +185,16 @@ fun mapfoldB {kind = fk, con = fc, bind} =
| CUnit => S.return2 cAll
+ | CTuple cs =>
+ S.map2 (ListUtil.mapfold (mfc ctx) cs,
+ fn cs' =>
+ (CTuple cs', loc))
+
+ | CProj (c, n) =>
+ S.map2 (mfc ctx c,
+ fn c' =>
+ (CProj (c', n), loc))
+
| CError => S.return2 cAll
| CUnif (_, _, _, ref (SOME c)) => mfc' ctx c
| CUnif _ => S.return2 cAll