]> Repositorios git - scryer-prolog.git/commitdiff
add is_list
authorMark Thom <[email protected]>
Sat, 10 Mar 2018 02:27:22 +0000 (19:27 -0700)
committerMark Thom <[email protected]>
Sat, 10 Mar 2018 02:27:22 +0000 (19:27 -0700)
README.md
src/prolog/lib/lists.pl

index 34eed0bf4894affb3a6ee41810acdc2d9ecbbad8..9dd97819d1270c704a6bacbdfaf5c91d6b5783b5 100644 (file)
--- a/README.md
+++ b/README.md
@@ -138,6 +138,7 @@ The following predicates are built-in to rusty-wam.
 * `functor/3`
 * `ground/1`
 * `integer/1`
+* `is_list/1`
 * `length/2`
 * `maplist/1..8`
 * `member/2`
index f8c49710324404dc2d49d0c0627ce0f091dd75ff..b139f83bdcc5811f7373c39f9d496c13a926eebb 100644 (file)
@@ -1,4 +1,4 @@
-:- module(lists, [member/2, select/3, append/3, memberchk/2, reverse/2, maplist/2,
+:- module(lists, [member/2, select/3, append/3, is_list/1, memberchk/2, reverse/2, maplist/2,
                  maplist/3, maplist/4, maplist/5, maplist/6, maplist/7, maplist/8,
                  maplist/9]).
 
@@ -11,6 +11,10 @@ select(X, [Y|Xs], [Y|Ys]) :- select(X, Xs, Ys).
 append([], R, R).
 append([X|L], R, [X|S]) :- append(L, R, S).
 
+is_list(X) :- var(X), !, false.        
+is_list([]).
+is_list([_|T]) :- is_list(T).
+
 memberchk(X, Xs) :- member(X, Xs), !.
 
 reverse(Xs, Ys) :- var(Ys), !, reverse(Xs, [], Ys).