is_list/1 is now a builtin.
This commit is contained in:
parent
ad617951ec
commit
b5dc71d080
@ -2821,6 +2821,23 @@ p_unifiable(void)
|
||||
return Yap_unify(ARG3, tf);
|
||||
}
|
||||
|
||||
int
|
||||
Yap_IsListTerm(Term t)
|
||||
{
|
||||
while (!IsVarTerm(t) && IsPairTerm(t)) {
|
||||
t = TailOfTerm(t);
|
||||
}
|
||||
return t == TermNil;
|
||||
}
|
||||
|
||||
static Int
|
||||
p_is_list(void)
|
||||
{
|
||||
return Yap_IsListTerm(Deref(ARG1));
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Yap_InitUtilCPreds(void)
|
||||
{
|
||||
Term cm = CurrentModule;
|
||||
@ -2832,6 +2849,7 @@ void Yap_InitUtilCPreds(void)
|
||||
Yap_InitCPred("$non_singletons_in_term", 3, p_non_singletons_in_term, SafePredFlag|HiddenPredFlag);
|
||||
Yap_InitCPred("term_variables", 2, p_term_variables, 0);
|
||||
Yap_InitCPred("term_variables", 3, p_term_variables3, 0);
|
||||
Yap_InitCPred("is_list", 1, p_is_list, SafePredFlag);
|
||||
CurrentModule = TERMS_MODULE;
|
||||
Yap_InitCPred("variable_in_term", 2, p_var_in_term, SafePredFlag);
|
||||
Yap_InitCPred("term_hash", 4, p_term_hash, SafePredFlag);
|
||||
|
@ -353,6 +353,7 @@ void STD_PROTO(Yap_InitUserBacks,(void));
|
||||
|
||||
/* utilpreds.c */
|
||||
Term STD_PROTO(Yap_CopyTerm,(Term));
|
||||
int STD_PROTO(Yap_IsListTerm,(Term));
|
||||
Term STD_PROTO(Yap_CopyTermNoShare,(Term));
|
||||
int STD_PROTO(Yap_SizeGroundTerm,(Term, int));
|
||||
void STD_PROTO(Yap_InitUtilCPreds,(void));
|
||||
|
@ -8,7 +8,6 @@
|
||||
append/3,
|
||||
append/2,
|
||||
delete/3,
|
||||
is_list/1,
|
||||
last/2,
|
||||
member/2,
|
||||
memberchk/2,
|
||||
@ -83,14 +82,6 @@ delete([Head|List], Elem, [Head|Residue]) :-
|
||||
delete(List, Elem, Residue).
|
||||
|
||||
|
||||
% is_list(List)
|
||||
% is true when List is a proper List
|
||||
%
|
||||
is_list(L) :- var(L), !, fail.
|
||||
is_list([]).
|
||||
is_list([_|List]) :- is_list(List).
|
||||
|
||||
|
||||
% last(List, Last)
|
||||
% is true when List is a List and Last is identical to its last element.
|
||||
% This could be defined as last(L, X) :- append(_, [X], L).
|
||||
|
@ -1403,12 +1403,7 @@ X_API int PL_is_integer(term_t ts)
|
||||
X_API int PL_is_list(term_t ts)
|
||||
{
|
||||
YAP_Term t = Yap_GetFromSlot(ts);
|
||||
if (YAP_IsPairTerm(t)) {
|
||||
return 1;
|
||||
} else if (IsAtomTerm(t)) {
|
||||
return t == TermNil;
|
||||
} else
|
||||
return 0;
|
||||
return Yap_IsListTerm(t);
|
||||
}
|
||||
|
||||
X_API int PL_is_number(term_t ts)
|
||||
|
Reference in New Issue
Block a user