(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