(defrule output (suggestion ?action) => (printout t crlf "I would like to suggest you to " crlf ?action crlf crlf) )
(defrule eye-color (find (eye-color ?eye)) (person (name ?name) (eye-color ?eye)) => (printout t crlf ?name " has " ?eye " eye." crlf))
(defrule process-moved-information ?f1 <- (moved (name ?name) (address ?address)) ?f2 <- (person (name ?name)) => (retract ?f1) ;a MUST or infinite loop (modify ?f2 (address ?address)))
(deftemplate person (multislot name) (slot phone-number)) (defrule print-telephone-number (person (name ? ? ?last-name) (phone-number ?phone)) => (printout t ?phone crlf))
(defrule print-telephone-number (person (name $? ?last-name) (phone-number ?phone)) => (printout t ?phone crlf))
(defrule person-without-brown-hair (person (name ?name) (hair ~brown)) => (printout t ?name " does not have brown hair." crlf))
(defrule person-with-brown-or-black-hair (person (name ?name) (hair brown|black)) => (printout t ?name " has dark hair." crlf))
(defrule person-with-brown-or-black-hair (person (name ?name) (hair ?color&brown|black)) => (printout t ?name " has " ?color " hair." crlf)) (defrule person-without-brown-nor-black-hair (person (name ?name) (hair ?color&~brown|~black)) => (printout t ?name " has " ?color " hair." crlf))
(defrule complex-eye-hair-match (person (name ?name1) (eyes ?eyes1&blue|green) (hair ?hair1&~black)) (person (name ?name2&~?name1) (eyes ?eyes2&~eyes1) (hair ?hair2&red|?hair1)) => (printout t ?name1 " has " ?eyes1 "eyes and " ?hair1 " hair." crlf) (printout t ?name2 " has " ?eyes2 "eyes and " ?hair2 " hair." crlf))
(bind ?new-size (- ?size ?choice))
(defrule player-select (phase choose-player) => (printout t "Who moves first (Computer: c " "Human: h)? ") (assert (player-select (read))))
(open "input.dat" data "r")
(open "example.dat" xmp "w") (printout xmp "green" crlf) (printout xmp 7 crlf) (close xmp) (open "example.dat" xmp "r") (read xmp) (read xmp) (close xmp)
(format nil "Name: %-15s Age: %3d" "Bob Green" 35) (bind ?name (format nil "Name: %-15s Age: %3d" "Bob Green" 35)) (printout t ?name)
(readline xmp)
Previous Clips Introduction Up TOC Next Advanced Pattern Matching