prolog - making a difference in X and a atom -
i'm searching solution this. user can use my_predicate(x) or my_predicate(item).
i want achieve both gives different output. have check if it's x or item.
i know item can checked this: atom(item) how can check on x .
roelof
edit 1. weird, on swi-prolog site wont work.
my_predicate(x) :- var(x) , write("here name typed in"). my_predicate(x) :- nonvar(x) , write("here x typed in").
var/1 it's simplest metaprogramming tool available in prolog, since allows change program behaviour depending on such fundamental property instantiation of clause' variable.
i sometime use construct
some_applicative_code(x) :- ( nonvar(x) ; x = some_default_value ), ... to have kind of default value arguments, testing purpose.
calling ?- some_applicative_code(_). x bind some_default_value.
from edited post, seems inverting logic. expect
my_predicate(x) :- nonvar(x) , write("here name typed in"). my_predicate(x) :- var(x) , write("here x typed in"). edit here test
1 ?- my_predicate(_). here x typed in true. 2 ?- my_predicate(carlo). here name typed in true .
Comments
Post a Comment