class RubyProlog::Predicate
Attributes
clauses[RW]
db[RW]
id[R]
name[R]
Public Class Methods
new(db, name, explicit_id: nil)
click to toggle 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
<<(goals)
click to toggle source
DSL for 0-arity predicates
# File lib/ruby-prolog/ruby-prolog.rb, line 48 def <<(goals); TempClause.new(@db, self, []) << goals; end
[](*args)
click to toggle source
# File lib/ruby-prolog/ruby-prolog.rb, line 28 def [](*args) TempClause.new(@db, self, args) end
fact()
click to toggle source
# File lib/ruby-prolog/ruby-prolog.rb, line 50 def fact; TempClause.new(@db, self, []).fact; end
fork(new_db)
click to toggle 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
inspect()
click to toggle source
# File lib/ruby-prolog/ruby-prolog.rb, line 24 def inspect @name.to_s end
to_goal()
click to toggle source
# File lib/ruby-prolog/ruby-prolog.rb, line 49 def to_goal; TempClause.new(@db, self, []).to_goal; end
to_prolog()
click to toggle 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