[m-rev.] diff: additional modes for map.foldr/4 etc
Julien Fischer
juliensf at csse.unimelb.edu.au
Sun Apr 15 00:59:39 AEST 2012
Branches: main, 11.07
Add additional modes to map.foldr/4, map.foldr/6 etc.
library/map.m:
library/tree234.m:
Add the new modes.
Julien.
Index: library/map.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/library/map.m,v
retrieving revision 1.128
diff -u -r1.128 map.m
--- library/map.m 15 Jan 2012 14:49:36 -0000 1.128
+++ library/map.m 14 Apr 2012 06:39:20 -0000
@@ -422,38 +422,50 @@
:- mode map.foldr(pred(in, in, mdi, muo) is semidet, in, mdi, muo) is semidet.
:- mode map.foldr(pred(in, in, di, uo) is semidet, in, di, uo) is semidet.
:- mode map.foldr(pred(in, in, in, out) is cc_multi, in, in, out) is cc_multi.
-:- mode map.foldr(pred(in, in, di, uo) is cc_multi, in, di, uo) is cc_multi.
:- mode map.foldr(pred(in, in, mdi, muo) is cc_multi, in, mdi, muo)
is cc_multi.
+:- mode map.foldr(pred(in, in, di, uo) is cc_multi, in, di, uo) is cc_multi.
:- pred map.foldr2(pred(K, V, A, A, B, B), map(K, V), A, A, B, B).
:- mode map.foldr2(pred(in, in, in, out, in, out) is det,
in, in, out, in, out) is det.
-:- mode map.foldr2(pred(in, in, in, out, in, out) is semidet,
- in, in, out, in, out) is semidet.
+:- mode map.foldr2(pred(in, in, in, out, mdi, muo) is det,
+ in, in, out, mdi, muo) is det.
:- mode map.foldr2(pred(in, in, in, out, di, uo) is det,
in, in, out, di, uo) is det.
:- mode map.foldr2(pred(in, in, di, uo, di, uo) is det,
in, di, uo, di, uo) is det.
+:- mode map.foldr2(pred(in, in, in, out, in, out) is semidet,
+ in, in, out, in, out) is semidet.
+:- mode map.foldr2(pred(in, in, in, out, mdi, muo) is semidet,
+ in, in, out, mdi, muo) is semidet.
+:- mode map.foldr2(pred(in, in, in, out, di, uo) is semidet,
+ in, in, out, di, uo) is semidet.
:- pred map.foldr3(pred(K, V, A, A, B, B, C, C), map(K, V), A, A, B, B, C, C).
:- mode map.foldr3(pred(in, in, in, out, in, out, in, out) is det,
in, in, out, in, out, in, out) is det.
-:- mode map.foldr3(pred(in, in, in, out, in, out, in, out) is semidet,
- in, in, out, in, out, in, out) is semidet.
+:- mode map.foldr3(pred(in, in, in, out, in, out, mdi, muo) is det,
+ in, in, out, in, out, mdi, muo) is det.
:- mode map.foldr3(pred(in, in, in, out, in, out, di, uo) is det,
in, in, out, in, out, di, uo) is det.
:- mode map.foldr3(pred(in, in, in, out, di, uo, di, uo) is det,
in, in, out, di, uo, di, uo) is det.
:- mode map.foldr3(pred(in, in, di, uo, di, uo, di, uo) is det,
in, di, uo, di, uo, di, uo) is det.
+:- mode map.foldr3(pred(in, in, in, out, in, out, in, out) is semidet,
+ in, in, out, in, out, in, out) is semidet.
+:- mode map.foldr3(pred(in, in, in, out, in, out, mdi, muo) is semidet,
+ in, in, out, in, out, mdi, muo) is semidet.
+:- mode map.foldr3(pred(in, in, in, out, in, out, di, uo) is semidet,
+ in, in, out, in, out, di, uo) is semidet.
:- pred map.foldr4(pred(K, V, A, A, B, B, C, C, D, D), map(K, V),
A, A, B, B, C, C, D, D).
:- mode map.foldr4(pred(in, in, in, out, in, out, in, out, in, out) is det,
in, in, out, in, out, in, out, in, out) is det.
-:- mode map.foldr4(pred(in, in, in, out, in, out, in, out, in, out) is semidet,
- in, in, out, in, out, in, out, in, out) is semidet.
+:- mode map.foldr4(pred(in, in, in, out, in, out, in, out, mdi, muo) is det,
+ in, in, out, in, out, in, out, mdi, muo) is det.
:- mode map.foldr4(pred(in, in, in, out, in, out, in, out, di, uo) is det,
in, in, out, in, out, in, out, di, uo) is det.
:- mode map.foldr4(pred(in, in, in, out, in, out, di, uo, di, uo) is det,
@@ -462,6 +474,12 @@
in, in, out, di, uo, di, uo, di, uo) is det.
:- mode map.foldr4(pred(in, in, di, uo, di, uo, di, uo, di, uo) is det,
in, di, uo, di, uo, di, uo, di, uo) is det.
+:- mode map.foldr4(pred(in, in, in, out, in, out, in, out, in, out) is semidet,
+ in, in, out, in, out, in, out, in, out) is semidet.
+:- mode map.foldr4(pred(in, in, in, out, in, out, in, out, mdi, muo) is semidet,
+ in, in, out, in, out, in, out, mdi, muo) is semidet.
+:- mode map.foldr4(pred(in, in, in, out, in, out, in, out, di, uo) is semidet,
+ in, in, out, in, out, in, out, di, uo) is semidet.
% Apply a transformation predicate to all the values in a map.
%
@@ -481,40 +499,58 @@
% while continuously updating an accumulator.
%
:- pred map.map_foldl(pred(K, V, W, A, A), map(K, V), map(K, W), A, A).
-:- mode map.map_foldl(pred(in, in, out, di, uo) is det, in, out, di, uo)
- is det.
:- mode map.map_foldl(pred(in, in, out, in, out) is det, in, out, in, out)
is det.
-:- mode map.map_foldl(pred(in, in, out, in, out) is semidet, in, out, in, out)
- is semidet.
+:- mode map.map_foldl(pred(in, in, out, mdi, muo) is det, in, out, mdi, muo)
+ is det.
+:- mode map.map_foldl(pred(in, in, out, di, uo) is det, in, out, di, uo)
+ is det.
+:- mode map.map_foldl(pred(in, in, out, in, out) is semidet, in, out,
+ in, out) is semidet.
+:- mode map.map_foldl(pred(in, in, out, mdi, muo) is semidet, in, out,
+ mdi, muo) is semidet.
+:- mode map.map_foldl(pred(in, in, out, di, uo) is semidet, in, out,
+ di, uo) is semidet.
% As map.map_foldl, but with two accumulators.
%
:- pred map.map_foldl2(pred(K, V, W, A, A, B, B), map(K, V), map(K, W),
A, A, B, B).
-:- mode map.map_foldl2(pred(in, in, out, di, uo, di, uo) is det,
- in, out, di, uo, di, uo) is det.
-:- mode map.map_foldl2(pred(in, in, out, in, out, di, uo) is det,
- in, out, in, out, di, uo) is det.
:- mode map.map_foldl2(pred(in, in, out, in, out, in, out) is det,
in, out, in, out, in, out) is det.
+:- mode map.map_foldl2(pred(in, in, out, in, out, mdi, muo) is det,
+ in, out, in, out, mdi, muo) is det.
+:- mode map.map_foldl2(pred(in, in, out, in, out, di, uo) is det,
+ in, out, in, out, di, uo) is det.
+:- mode map.map_foldl2(pred(in, in, out, di, uo, di, uo) is det,
+ in, out, di, uo, di, uo) is det.
:- mode map.map_foldl2(pred(in, in, out, in, out, in, out) is semidet,
in, out, in, out, in, out) is semidet.
+:- mode map.map_foldl2(pred(in, in, out, in, out, mdi, muo) is semidet,
+ in, out, in, out, mdi, muo) is semidet.
+:- mode map.map_foldl2(pred(in, in, out, in, out, di, uo) is semidet,
+ in, out, in, out, di, uo) is semidet.
% As map.map_foldl, but with three accumulators.
%
:- pred map.map_foldl3(pred(K, V, W, A, A, B, B, C, C), map(K, V), map(K, W),
A, A, B, B, C, C).
+:- mode map.map_foldl3(pred(in, in, out, in, out, in, out, in, out) is det,
+ in, out, in, out, in, out, in, out) is det.
+:- mode map.map_foldl3(pred(in, in, out, in, out, in, out, mdi, muo) is det,
+ in, out, in, out, in, out, mdi, muo) is det.
:- mode map.map_foldl3(pred(in, in, out, di, uo, di, uo, di, uo) is det,
in, out, di, uo, di, uo, di, uo) is det.
-:- mode map.map_foldl3(pred(in, in, out, in, out, di, uo, di, uo) is det,
- in, out, in, out, di, uo, di, uo) is det.
:- mode map.map_foldl3(pred(in, in, out, in, out, in, out, di, uo) is det,
in, out, in, out, in, out, di, uo) is det.
-:- mode map.map_foldl3(pred(in, in, out, in, out, in, out, in, out) is det,
- in, out, in, out, in, out, in, out) is det.
+:- mode map.map_foldl3(pred(in, in, out, in, out, di, uo, di, uo) is det,
+ in, out, in, out, di, uo, di, uo) is det.
:- mode map.map_foldl3(pred(in, in, out, in, out, in, out, in, out) is semidet,
in, out, in, out, in, out, in, out) is semidet.
+:- mode map.map_foldl3(pred(in, in, out, in, out, in, out, mdi, muo) is semidet,
+ in, out, in, out, in, out, mdi, muo) is semidet.
+:- mode map.map_foldl3(pred(in, in, out, in, out, in, out, di, uo) is semidet,
+ in, out, in, out, in, out, di, uo) is semidet.
% As map.map_foldl, but without passing the key to the predicate.
%
Index: library/tree234.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/library/tree234.m,v
retrieving revision 1.75
diff -u -r1.75 tree234.m
--- library/tree234.m 17 Jan 2012 15:49:45 -0000 1.75
+++ library/tree234.m 14 Apr 2012 06:41:43 -0000
@@ -247,34 +247,46 @@
:- pred tree234.foldr2(pred(K, V, A, A, B, B), tree234(K, V), A, A, B, B).
:- mode tree234.foldr2(pred(in, in, in, out, in, out) is det,
in, in, out, in, out) is det.
-:- mode tree234.foldr2(pred(in, in, in, out, in, out) is semidet,
- in, in, out, in, out) is semidet.
+:- mode tree234.foldr2(pred(in, in, in, out, mdi, muo) is det,
+ in, in, out, mdi, muo) is det.
:- mode tree234.foldr2(pred(in, in, in, out, di, uo) is det,
in, in, out, di, uo) is det.
:- mode tree234.foldr2(pred(in, in, di, uo, di, uo) is det,
in, di, uo, di, uo) is det.
+:- mode tree234.foldr2(pred(in, in, in, out, in, out) is semidet,
+ in, in, out, in, out) is semidet.
+:- mode tree234.foldr2(pred(in, in, in, out, mdi, muo) is semidet,
+ in, in, out, mdi, muo) is semidet.
+:- mode tree234.foldr2(pred(in, in, in, out, di, uo) is semidet,
+ in, in, out, di, uo) is semidet.
:- pred tree234.foldr3(pred(K, V, A, A, B, B, C, C), tree234(K, V),
A, A, B, B, C, C).
:- mode tree234.foldr3(pred(in, in, in, out, in, out, in, out) is det,
in, in, out, in, out, in, out) is det.
-:- mode tree234.foldr3(pred(in, in, in, out, in, out, in, out) is semidet,
- in, in, out, in, out, in, out) is semidet.
+:- mode tree234.foldr3(pred(in, in, in, out, in, out, mdi, muo) is det,
+ in, in, out, in, out, mdi, muo) is det.
:- mode tree234.foldr3(pred(in, in, in, out, in, out, di, uo) is det,
in, in, out, in, out, di, uo) is det.
:- mode tree234.foldr3(pred(in, in, in, out, di, uo, di, uo) is det,
in, in, out, di, uo, di, uo) is det.
:- mode tree234.foldr3(pred(in, in, di, uo, di, uo, di, uo) is det,
in, di, uo, di, uo, di, uo) is det.
+:- mode tree234.foldr3(pred(in, in, in, out, in, out, in, out) is semidet,
+ in, in, out, in, out, in, out) is semidet.
+:- mode tree234.foldr3(pred(in, in, in, out, in, out, mdi, muo) is semidet,
+ in, in, out, in, out, mdi, muo) is semidet.
+:- mode tree234.foldr3(pred(in, in, in, out, in, out, di, uo) is semidet,
+ in, in, out, in, out, di, uo) is semidet.
:- pred tree234.foldr4(pred(K, V, A, A, B, B, C, C, D, D), tree234(K, V),
A, A, B, B, C, C, D, D).
:- mode tree234.foldr4(pred(in, in, in, out, in, out, in, out, in, out)
is det,
in, in, out, in, out, in, out, in, out) is det.
-:- mode tree234.foldr4(pred(in, in, in, out, in, out, in, out, in, out)
- is semidet,
- in, in, out, in, out, in, out, in, out) is semidet.
+:- mode tree234.foldr4(pred(in, in, in, out, in, out, in, out, mdi, muo)
+ is det,
+ in, in, out, in, out, in, out, mdi, muo) is det.
:- mode tree234.foldr4(pred(in, in, in, out, in, out, in, out, di, uo) is det,
in, in, out, in, out, in, out, di, uo) is det.
:- mode tree234.foldr4(pred(in, in, in, out, in, out, di, uo, di, uo) is det,
@@ -283,6 +295,15 @@
in, in, out, di, uo, di, uo, di, uo) is det.
:- mode tree234.foldr4(pred(in, in, di, uo, di, uo, di, uo, di, uo) is det,
in, di, uo, di, uo, di, uo, di, uo) is det.
+:- mode tree234.foldr4(pred(in, in, in, out, in, out, in, out, in, out)
+ is semidet,
+ in, in, out, in, out, in, out, in, out) is semidet.
+:- mode tree234.foldr4(pred(in, in, in, out, in, out, in, out, mdi, muo)
+ is semidet,
+ in, in, out, in, out, in, out, mdi, muo) is semidet.
+:- mode tree234.foldr4(pred(in, in, in, out, in, out, in, out, di, uo)
+ is semidet,
+ in, in, out, in, out, in, out, di, uo) is semidet.
:- func tree234.map_values(func(K, V) = W, tree234(K, V)) = tree234(K, W).
@@ -298,37 +319,57 @@
:- pred tree234.map_foldl(pred(K, V, W, A, A), tree234(K, V), tree234(K, W),
A, A).
-:- mode tree234.map_foldl(pred(in, in, out, di, uo) is det,
- in, out, di, uo) is det.
:- mode tree234.map_foldl(pred(in, in, out, in, out) is det,
in, out, in, out) is det.
+:- mode tree234.map_foldl(pred(in, in, out, mdi, muo) is det,
+ in, out, mdi, muo) is det.
+:- mode tree234.map_foldl(pred(in, in, out, di, uo) is det,
+ in, out, di, uo) is det.
:- mode tree234.map_foldl(pred(in, in, out, in, out) is semidet,
in, out, in, out) is semidet.
+:- mode tree234.map_foldl(pred(in, in, out, mdi, muo) is semidet,
+ in, out, mdi, muo) is semidet.
+:- mode tree234.map_foldl(pred(in, in, out, di, uo) is semidet,
+ in, out, di, uo) is semidet.
:- pred tree234.map_foldl2(pred(K, V, W, A, A, B, B),
tree234(K, V), tree234(K, W), A, A, B, B).
+:- mode tree234.map_foldl2(pred(in, in, out, in, out, in, out) is det,
+ in, out, in, out, in, out) is det.
+:- mode tree234.map_foldl2(pred(in, in, out, in, out, mdi, muo) is det,
+ in, out, in, out, mdi, muo) is det.
:- mode tree234.map_foldl2(pred(in, in, out, di, uo, di, uo) is det,
in, out, di, uo, di, uo) is det.
:- mode tree234.map_foldl2(pred(in, in, out, in, out, di, uo) is det,
in, out, in, out, di, uo) is det.
-:- mode tree234.map_foldl2(pred(in, in, out, in, out, in, out) is det,
- in, out, in, out, in, out) is det.
:- mode tree234.map_foldl2(pred(in, in, out, in, out, in, out) is semidet,
in, out, in, out, in, out) is semidet.
+:- mode tree234.map_foldl2(pred(in, in, out, in, out, mdi, muo) is semidet,
+ in, out, in, out, mdi, muo) is semidet.
+:- mode tree234.map_foldl2(pred(in, in, out, in, out, di, uo) is semidet,
+ in, out, in, out, di, uo) is semidet.
:- pred tree234.map_foldl3(pred(K, V, W, A, A, B, B, C, C),
tree234(K, V), tree234(K, W), A, A, B, B, C, C).
+:- mode tree234.map_foldl3(pred(in, in, out, in, out, in, out, in, out) is det,
+ in, out, in, out, in, out, in, out) is det.
+:- mode tree234.map_foldl3(pred(in, in, out, in, out, in, out, mdi, muo) is det,
+ in, out, in, out, in, out, mdi, muo) is det.
:- mode tree234.map_foldl3(pred(in, in, out, di, uo, di, uo, di, uo) is det,
in, out, di, uo, di, uo, di, uo) is det.
:- mode tree234.map_foldl3(pred(in, in, out, in, out, di, uo, di, uo) is det,
in, out, in, out, di, uo, di, uo) is det.
:- mode tree234.map_foldl3(pred(in, in, out, in, out, in, out, di, uo) is det,
in, out, in, out, in, out, di, uo) is det.
-:- mode tree234.map_foldl3(pred(in, in, out, in, out, in, out, in, out) is det,
- in, out, in, out, in, out, in, out) is det.
:- mode tree234.map_foldl3(pred(in, in, out, in, out, in, out, in, out)
is semidet,
in, out, in, out, in, out, in, out) is semidet.
+:- mode tree234.map_foldl3(pred(in, in, out, in, out, in, out, mdi, muo)
+ is semidet,
+ in, out, in, out, in, out, mdi, muo) is semidet.
+:- mode tree234.map_foldl3(pred(in, in, out, in, out, in, out, di, uo)
+ is semidet,
+ in, out, in, out, in, out, di, uo) is semidet.
:- pred tree234.map_values_foldl(pred(V, W, A, A),
tree234(K, V), tree234(K, W), A, A).
--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to: mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions: mercury-reviews-request at csse.unimelb.edu.au
--------------------------------------------------------------------------
More information about the reviews
mailing list