[m-rev.] for review: added list__det_split_list/4
Samrith UONG
samuong at gmail.com
Wed Jan 25 15:09:18 AEDT 2006
For review by anyone.
Estimated hours taken: 0.2
library/list.m:
Added a new predicate list__det_split_list/4, which is a
determinstic version of list__split_list/4.
Index: library/list.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/library/list.m,v
retrieving revision 1.143
diff -u -r1.143 list.m
--- library/list.m 15 Nov 2005 04:59:23 -0000 1.143
+++ library/list.m 25 Jan 2006 04:04:19 -0000
@@ -193,6 +193,14 @@
:- pred list__split_list(int::in, list(T)::in, list(T)::out, list(T)::out)
is semidet.
+ % list__det_split_list(Len, List, Start, End):
+ %
+ % A deterministic version of list__split_list, which aborts instead
+ % of failing if Len > list__length(List).
+ %
+:- pred list__det_split_list(int::in, list(T)::in, list(T)::out, list(T)::out)
+ is det.
+
% list__take(Len, List, Start):
%
% `Start' is the first `Len' elements of `List'. Fails if `List' has
@@ -1510,6 +1518,16 @@
list__split_list(N - 1, List1, Start1, End)
).
+list__det_split_list(N, List, Start, End) :-
+ ( if
+ list__split_list(N, List, Start0, End0)
+ then
+ Start = Start0,
+ End = End0
+ else
+ error("list__det_split_list: index out of range")
+ ).
+
list__take(N, As, Bs) :-
( N > 0 ->
As = [A | As1],
--------------------------------------------------------------------------
mercury-reviews mailing list
post: mercury-reviews at cs.mu.oz.au
administrative address: owner-mercury-reviews at cs.mu.oz.au
unsubscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: unsubscribe
subscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------
More information about the reviews
mailing list