'Clips not providing answer
So I get the program to say enter name. However, once I enter the name it doesn't output any other information. I'm trying to get it to print out the name, class, magnitude, and distance. Where am I going wrong?
(deftemplate stars
(slot name)
(slot class)
(slot magnitude)
(slot dist)
)
(deffacts star
(stars (name Sirius) (class A) (magnitude 1) (dist 8.8))
(stars (name Canopus) (class F) (magnitude -3) (dist 98))
(stars (name Arcturus) (class K) (magnitude 0) (dist 36))
(stars (name Vega) (class A) (magnitude 1) (dist 26))
(stars (name Capella) (class G) (magnitude -1) (dist 46))
(stars (name Rigel) (class B) (magnitude -7) (dist 880))
(stars (name Procyon) (class F) (magnitude 3) (dist 11))
(stars (name Betelgeuse) (class M) (magnitude -5) (dist 490))
(stars (name Altair) (class A) (magnitude 2) (dist 16))
(stars (name Aldebaran) (class K) (magnitude -1) (dist 68))
(stars (name Spica) (class B) (magnitude -3) (dist 300))
(stars (name Antares) (class M) (magnitude -4) (dist 250))
(stars (name Pollux) (class K) (magnitude 1) (dist 35))
(stars (name Deneb) (class A) (magnitude -7) (dist 1630))
)
(defrule start-up
?i <- (initial-fact)
=>
(printout t "Enter name: ")
(bind ?y (read))
(assert (name ?y))
(retract ?i)
)
(defrule S1
?char <- (stars (name ?n) (class ?c) (magnitude ?m) (dist ?d))
(name ?y)
(test ( eq ?n ?y))
=>
(printout t ?n " " ?c" " ?m " " ?d crlf)
(retract ?char)
(assert (found))
)
I got the initial output of enter name but didn't get the second output of name, class, magnitude, and distance.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
