Elliot Mummel
Elliot Mummel

Reputation: 33

How to assert multiple facts or rules in one assert/1 statement?

If I'm at the repl I can do

?- assert(foo(a)),assert(foo(b)),assert(foo(c)).

and that works, but not

?- assert((bar(a),bar(b),bar(c))).

or similar. Is there a way to only need to type "assert" once and pass in multiple facts? Same question for rules.

thanks!

I tried several variations of what I mentioned above to accomplish this but can't figure out how to do it. Also looked at the doc for assert/1 but it doesn't show how.

Upvotes: 0

Views: 127

Answers (1)

Paulo Moura
Paulo Moura

Reputation: 18663

Maybe you can instead consult from user?

?- [user].
:- dynamic(foo/1).
foo(a).
foo(b).
foo(c).

Press Ctrl-D to end consulting. If you just want to add clauses the database, you may not need to type the dynamic/1 directive.

P.S. assert/1 is a deprecated/legacy predicate. Use instead assrta/1 or assertz/1 if you must.

Upvotes: 2

Related Questions