(defdetpred <name> <num args> <body>)
which defines a simple predicate that just runs Lisp code and does not have to unify any variables. Arguments are referenced with: (special-arg
<num>)
. The body succeeds by default, but if a failure case arises, use: (detpred-fail
<name>
<num args>)
.
(defdetpred my-integer 1
(unless (integerp (special-arg 0))
(detpred-fail my-integer 1)))
KnowledgeWorks and Prolog User Guide (Unix version) - 26 Feb 2015