KnowledgeWorks and Prolog User Guide > 7 Reference Guide

NextPrevUpTopContentsIndex

deftactic

Macro
Summary

Defines a tactic function for use in context strategies.

Signature

deftactic tactic-name type lambda-list &body body => tactic-name

Arguments

tactic-name

A symbol.

type

Either :static or :dynamic .

lambda-list

A two argument lambda list.

body

A function body.

Values

tactic-name

A symbol.

Description

Defines a new conflict resolution tactic named tactic-name . The type of the tactic may be :static if the body does not look into the slots of the objects making up the instantiation, otherwise :dynamic . The lambda-list binds to two instantiation objects and the function body body should return non-nil if and only if the first instantiation object is preferred to the second. deftactic also defines a function of the same and body can be preceded by a documentation string.

The newly defined tactic may be used as any in-built tactic.

Examples
(deftactic prefer-trucks :static (inst1 inst2)
  (flet ((truck-p (obj) (typep obj 'truck)))
    (and (some #'truck-p (inst-token inst1))
      (notany #'truck-p (inst-token inst2)))))

The new tactic may be used in a defcontext form:

(defcontext my-context :strategy (prefer-trucks))
See also

inst-bindings
inst-token
inst-rulename
defcontext


KnowledgeWorks and Prolog User Guide (Macintosh version) - 22 Dec 2009

NextPrevUpTopContentsIndex