UN keysort/2 partial error checking and tiny speedup
This commit is contained in:
parent
dc43d26c8a
commit
a223c33e0b
15
pl/sort.yap
15
pl/sort.yap
@ -81,6 +81,21 @@ msort(L,O) :-
|
|||||||
'$msort'(L,O).
|
'$msort'(L,O).
|
||||||
|
|
||||||
keysort(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).
|
'$keysort'(L,O).
|
||||||
|
|
||||||
:- meta_predicate prolog:predsort(3,+,-).
|
:- meta_predicate prolog:predsort(3,+,-).
|
||||||
|
Reference in New Issue
Block a user