UN keysort/2 partial error checking and tiny speedup

This commit is contained in:
Vítor Santos Costa 2012-03-27 14:17:29 +01:00
parent dc43d26c8a
commit a223c33e0b

View File

@ -81,6 +81,21 @@ msort(L,O) :-
'$msort'(L,O).
keysort(L,O) :-
'$skip_list'(NL,L,RL),
( RL == [] -> true ;
var(RL) -> '$do_error'(instantiation_error,sort(L,O)) ;
'$do_error'(type_error(list,L),sort(L,O))
),
(
nonvar(O)
->
'$skip_list'(NO,O,RO),
( RO == [] -> NO =:= NL ;
var(RO) -> NO =< NL ;
'$do_error'(type_error(list,O),sort(L,O))
)
; true
),
'$keysort'(L,O).
:- meta_predicate prolog:predsort(3,+,-).