ADDED: type checks for type boolean

This commit is contained in:
Markus Triska
2020-06-07 19:24:51 +02:00
parent 5d91c1af81
commit d5e76da475

View File

@@ -27,7 +27,8 @@
- integer - integer
- atom - atom
- list. - list
- boolean
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
must_be(Type, Term) :- must_be(Type, Term) :-
@@ -45,6 +46,7 @@ must_be_(integer, Term) :- check_(integer, integer, Term).
must_be_(atom, Term) :- check_(atom, atom, Term). must_be_(atom, Term) :- check_(atom, atom, Term).
must_be_(list, Term) :- check_(ilist, list, Term). must_be_(list, Term) :- check_(ilist, list, Term).
must_be_(type, Term) :- check_(type, type, Term). must_be_(type, Term) :- check_(type, type, Term).
must_be_(boolean, Term) :- check_(boolean, boolean, Term).
check_(Pred, Type, Term) :- check_(Pred, Type, Term) :-
( var(Term) -> instantiation_error(must_be/2) ( var(Term) -> instantiation_error(must_be/2)
@@ -52,6 +54,8 @@ check_(Pred, Type, Term) :-
; type_error(Type, Term, must_be/2) ; type_error(Type, Term, must_be/2)
). ).
boolean(B) :- ( B == true ; B == false ).
ilist(V) :- var(V), instantiation_error(must_be/2). ilist(V) :- var(V), instantiation_error(must_be/2).
ilist([]). ilist([]).
ilist([_|Ls]) :- ilist(Ls). ilist([_|Ls]) :- ilist(Ls).
@@ -61,6 +65,7 @@ type(integer).
type(atom). type(atom).
type(list). type(list).
type(var). type(var).
type(boolean).
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
can_be(Type, Term) can_be(Type, Term)
@@ -86,6 +91,7 @@ can_be(Type, Term) :-
can_(integer, Term) :- integer(Term). can_(integer, Term) :- integer(Term).
can_(atom, Term) :- atom(Term). can_(atom, Term) :- atom(Term).
can_(list, Term) :- list_or_partial_list(Term). can_(list, Term) :- list_or_partial_list(Term).
can_(boolean, Term) :- boolean(Term).
list_or_partial_list(Var) :- var(Var). list_or_partial_list(Var) :- var(Var).
list_or_partial_list([]). list_or_partial_list([]).