class RubyProlog::Predicate
Attributes
Public Class Methods
Source
# File lib/ruby-prolog/ruby-prolog.rb, line 17 def initialize(db, name, explicit_id: nil) @id = explicit_id || (@@id_counter += 1) @db = db @name = name @clauses = [] end
Public Instance Methods
Source
# File lib/ruby-prolog/ruby-prolog.rb, line 48 def <<(goals); TempClause.new(@db, self, []) << goals; end
DSL for 0-arity predicates
Source
# File lib/ruby-prolog/ruby-prolog.rb, line 28 def [](*args) TempClause.new(@db, self, args) end
Source
# File lib/ruby-prolog/ruby-prolog.rb, line 50 def fact; TempClause.new(@db, self, []).fact; end
Source
# File lib/ruby-prolog/ruby-prolog.rb, line 38 def fork(new_db) dupe = self.clone dupe.db = new_db dupe.clauses = dupe.clauses.dup dupe end
Source
# File lib/ruby-prolog/ruby-prolog.rb, line 49 def to_goal; TempClause.new(@db, self, []).to_goal; end
Source
# File lib/ruby-prolog/ruby-prolog.rb, line 32 def to_prolog @clauses.map do |head, body| "#{head.to_prolog}#{body ? " :- #{body.to_prolog}" : ''}." end.join("\n") end