Guest User

Untitled

a guest
Jul 23rd, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.26 KB | None | 0 0
  1. %%% list all fact Predicates having an Argument as any argument.
  2.  
  3. argument_predicates(Argument, Predicates) :-
  4. findall(Predicate, (
  5. predicate_property(M:Clause, file(_)), % list all predicates
  6. \+ M = system, % exclude 'system' Module, or you can constrain it to M = user
  7. clause(Clause, true), % is Clause a fact?, ie. Body = true.
  8. arg(_, Clause, Argument), % Clause has the Argument as an argument (change _ to 1 if Argument has to be the first argument of a predicate).
  9. current_predicate(Predicate, Clause), % extract Predicate from Clause (another way: functor(Clause,Predicate,_))
  10. \+ Predicate = ignore % exclude 'ignore' predicate since it succeeds for anything.
  11. ), Predicates).
  12.  
  13. upper_letter(0'A).
  14. upper_letter(0'B).
  15. upper_letter(0'C).
  16.  
  17. lower_letter(0'a).
  18. lower_letter(0'b).
  19. lower_letter(0'c).
  20.  
  21. % ?- argument_predicates(0'A, P).
  22. % P = [upper_letter].
  23. %
  24. % ?- argument_predicates(0'a, P).
  25. % P = [lower_letter].
  26. %
  27.  
  28. my(b).
  29. my(a).
  30. another(a).
  31. andAnother(a,b).
  32. my2(c).
  33. test(X) :- my(X).
  34. my3(c,b,a).
  35.  
  36. % ?- argument_predicates(a, P).
  37. % P = [andAnother, another, my, my3]
  38. %
  39. % ?- argument_predicates(b, P).
  40. % P = [andAnother, my, my3].
  41. %
  42. % ?- argument_predicates(c, P).
  43. % P = [my3, my2].
  44. %
Add Comment
Please, Sign In to add comment