> (be holds (@A @S)
> ((restoreSitArg @A @S @F) (@ -> @F))
> ((not (restoreSitArg @A @S @F)) (isAtom @A) (@ -> @A)) ) )
> gives me the same results as using the (@ solve (list (-> @F)))
> clause. Neither that nor (@ -> @F) seem to unify variables in @F (which
> is bound to a clause)
(@ -> @F) just matches locally, without binding variables. What happens
if you use (@F -> @F) or (@A -> @A)? This will unify the variable with
its Lisp value.
Or did I understand right that @F and/or @A contain another Pilog
clause? Then: Can't you use (call @A), as I wrote in my last mail?
I still don't understand why this test of @A and/or @F for being non-NIL
is necessary at all. This looks unusual to me. On the other hand, I'm a
really poor Prolog programmer ...