AOA #CS607 k is tutorials ma meny #clips programming ma ES bnana sikhaya
Facebook: https://web.facebook.com/Nauman1
.Here is my #slideshare #link for downloading slides..
Asssignments k lia facebook link per contact krain
umeed hai ki aapko ye video achi lgi.
Please Share, Support, follow , Subscribe!!! or if u Need help me?
Facebook: https://web.facebook.com/Nauman1
Linkedin : https://bit.ly/2DYFgTg
Download #Artificial_intelligence_slides https://bit.ly/2HTb3dD
Subscribe Nauman Malik channel: https://bit.ly/2t1P3Dd
Cs607 #playlist on Youtube: https://bit.ly/2DNUjQM
Instagram: https://www.instagram.com/nauman_mlik/
Google Plus: https://bit.ly/2MSJq3n
BLOGspot https://naumanai.blogspot.com/
About : Nauman Malik is actually a YouTube Channel, where you will find #University
courses videos #Artificial_intelligence #cs607 #robotic technological videos in Urdu_
Hindi, #keep in touch for your Future #needs So don’t forgot to subscribe :)
Clips basics how to make expert system in clips | facts adding | rules making | Rules firing | inference | cs607
1. CLIPS Basics
Nauman nay jo commands krwae
(deftemplate sister "bhai sahab" (slot sisterName)))
(assert (sister (sisterName "gul")))
(assert (sister (sisterName "hadia")))
(assert (sister (sisterName "jasmine")))
(defrule A "BHAI SAHIB SUPERVISOR" (sister (sisterName "hadia"))
=>
(printout t "parh lia kro tmahary paper nazdik hy" crlf crlf)
)
now we have to assert a new fact??
(assert (sister (sisterName "gul")))
now we have to run>
(run)
found it
agend perr excute it means k kam khtm hoa
other basic command for vu student
CLIPS> (+ 3 4)
7
CLIPS> (defglobal ?*x* = 3)
CLIPS> ?*x*
3
CLIPS> red
red
CLIPS> (bind ?a 5)
5
CLIPS> (+ ?a 3)
8
CLIPS> (reset)
CLIPS> ?a
[EVALUATN1] Variable a is unbound
FALSE
CLIPS>
CLIPS> (- 12 3 4)
5
CLIPS> (- 12 3.0 5)
4.0
CLIPS> (- 4.7 3.1)
1.6
3. CLIPS>
CLIPS> (** 3 2)
9.0
CLIPS>
CLIPS> (exp 1)
2.718281828459045
CLIPS>
CLIPS> (log10 100)
2.0
CLIPS>
CLIPS> (mod 5 2)
1
CLIPS> (mod 3.7 1.2)
0.1
CLIPS>
Function calls in CLIPS use a prefix notation – the arguments to a function always appear after
the function name. Function calls begin with a left parenthesis, followed by the name of the
function, then the arguments to the function follow (each argument separated by one or more
spaces). Arguments to a function can be primitive data types, variables, or another function call.
The function call is then closed with a right parenthesis. Some examples of function calls using
the addition (+) and multiplication (*) functions are shown following.
(+ 3 4 5)
(* 5 6.0 2)
(+ 3 (* 8 9) 4)
(* 8 (+ 3 (* 2 3 4) 9) (* 3 4))
Ordered facts consist of a symbol followed by a sequence of zero or more fields separated by
spaces and delimited by an opening parenthesis on the left and a closing parenthesis on the right.
The first field of an ordered fact specifies a “relation” that applied to the remaining fields in the
ordered fact. For example, (father-of jack bill) states that bill is the father of jack.
Some examples of ordered facts are shown following.
(the pump is on)
(altitude is 10000 feet)
(grocery-list bread milk eggs)
Non-ordered(ordeftemplate) factsprovide the userwiththe abilitytoabstractthe structure of a fact
by assigningnamestoeachfieldinthe fact.The deftemplate construct(see section3) isusedtocreate
a template whichcanthenbe usedto access fieldsbyname.The deftemplate constructisanalogousto
a record or structure definitioninprogramminglanguagessuchasPascal and C.
4. Some examples of deftemplate facts are shown following.
(client (name "Joe Brown") (id X9345A))
(point-mass (x-velocity 100) (y-velocity -200))
(class (teacher "Martha Jones") (#-students 30) (Room "37A"))
(grocery-list (#-of-items 3) (items bread milk eggs))
Deftemplate Construct
The deftemplate constructisanalogoustoarecord or structure definitioninprogramminglanguages
such as Pascal and C.
(deftemplate object
(slot name)
(slot location)
(slot on-top-of)
(slot weight)
(multislot contents))
The gensym* function is similar to the gensym function, however, it will produce a unique
symbol that does not currently exist within the CLIPS environment.
Example
CLIPS> (setgen 1)
1
CLIPS> (assert (gen1 gen2 gen3))
<Fact-0>
CLIPS> (gensym)
gen1
CLIPS> (gensym*)
gen4
CLIPS>
The <default-attribute> specifies the value to be used for unspecified slots of a template fact
when an assert action is performed. One of two types of default selections can be chosen: default
or dynamic-default.
The default attribute specifies a static default value. The specified expressions are evaluated
once when the deftemplate is defined and the result is stored with the deftemplate. The result is
assigned to the appropriate slot when a new template fact is asserted. If the keyword ?DERIVE is
used for the default value, then a default value is derived from the constraints for the slot (see
section 11.5 for more details). By default, the default attribute for a slot is (default ?DERIVE). If
the keyword ?NONE is used for the default value, then a value must explicitly be assigned for a
slot when an assert is performed. It is an error to assert a template fact without specifying the
values for the (default ?NONE) slots.
5. The default-dynamic attribute is a dynamic default. The specified expressions are evaluated
every time a template fact is asserted, and the result is assigned to the appropriate slot.
A single-field slot may only have a single value for its default. Any number of values may be
specified as the default for a multifield slot (as long as the number of values satisfies the
cardinality attribute for the slot).
Example
CLIPS> (clear)
CLIPS>
(deftemplate foo
(slot w (default ?NONE))
(slot x (default ?DERIVE))
(slot y (default (gensym*)))
(slot z (default-dynamic (gensym*))))
CLIPS> (assert (foo))
[TMPLTRHS1] Slot w requires a value because of its (default ?NONE) attribute.
CLIPS> (assert (foo (w 3)))
<Fact-0>
CLIPS> (assert (foo (w 4)))
<Fact-1>
CLIPS> (facts)
f-0 (foo (w 3) (x nil) (y gen1) (z gen2))
f-1 (foo (w 4) (x nil) (y gen1) (z gen3))
For a total of 2 facts.
CLIPS>
Deffacts
Example
(deffacts startup "Refrigerator Status"
(refrigerator light on)
(refrigerator door open)
(refrigerator temp (get-temp)))
All suchexpressionsare evaluatedwhenCLIPSisreset.
(deffacts data-facts
(data 1.0 blue "red")
(data 1 blue)
(data 1 blue red)
(data 1 blue RED)
6. (data 1 blue red 6.9))
(deftemplate person
(slot name)
(slot age)
(multislot friends))
(deffacts people
(person (name Joe) (age 20))
(person (name Bob) (age 20))
(person (name Joe) (age 34))
(person (name Sue) (age 34))
(person (name Sue) (age 20)))
Defrule
Example
(defrule example-rule "This is an example of a simple rule"
(refrigerator light on)
(refrigerator door open)
=>
(assert (refrigerator food spoiled)))
CLIPS> (clear)
CLIPS> (defrule find-data (data 1 blue red) =>)
CLIPS> (reset)
CLIPS> (agenda)
0 find-data: f-3
For a total of 1 activation.
CLIPS> (facts)
f-0 (initial-fact)
f-1 (data 1.0 blue "red")
f-2 (data 1 blue)
f-3 (data 1 blue red)
f-4 (data 1 blue RED)
f-5 (data 1 blue red 6.9)
For a total of 6 facts.
CLIPS>
CLIPS> (clear)
CLIPS>
(defrule Find-Bob
(person (name Bob) (age 20))
=>)
7. CLIPS>
(defrule Find-Sue
(person (age 34) (name Sue))
=>)
CLIPS> (reset)
CLIPS> (agenda)
0 Find-Sue: f-4
0 Find-Bob: f-2
For a total of 2 activations.
CLIPS> (facts)
f-0 (initial-fact)
f-1 (person (name Joe) (age 20) (friends))
f-2 (person (name Bob) (age 20) (friends))
f-3 (person (name Joe) (age 34) (friends))
f-4 (person (name Sue) (age 34) (friends))
f-5 (person (name Sue) (age 20) (friends))
For a total of 6 facts.
CLIPS>
Wildcards
The single-fieldwildcard,denotedbyaquestionmarkcharacter(?),matchesanyvalue storedinexactly
one fieldinthe patternentity.
The multifieldwildcard,denotedbyadollarsignfollowedbyaquestionmark($?),matchesany value in
zero or more fieldsinapatternentity.
Example 1
CLIPS> (clear)
CLIPS> (reset)
CLIPS> (assert (data 2 blue green)
(data 1 blue)
(data 1 blue red))
<Fact-3>
CLIPS> (facts)
f-0 (initial-fact)
f-1 (data 2 blue green)
f-2 (data 1 blue)
f-3 (data 1 blue red)
For a total of 4 facts.
CLIPS>
(defrule find-data-1
(data ?x ?y ?z)
=>
(printout t ?x " : " ?y " : " ?z crlf))
CLIPS> (run)
8. 1 : blue : red
2 : blue : green
CLIPS>
Example 2
CLIPS> (reset)
CLIPS> (assert (data 1 blue)
(data 1 blue red)
(data 1 blue red 6.9))
<Fact-3>
CLIPS> (facts)
f-0 (initial-fact)
f-1 (data 1 blue)
f-2 (data 1 blue red)
f-3 (data 1 blue red 6.9)
For a total of 4 facts.
CLIPS>
(defrule find-data-1
(data ?x $?y ?z)
=>
(printout t "?x = " ?x crlf
"?y = " ?y crlf
"?z = " ?z crlf
"------"crlf))
CLIPS> (run)
?x = 1
?y = (blue red)
?z = 6.9
------
?x = 1
?y = (blue)
?z = red
------
?x = 1
?y = ()
?z = blue
------
CLIPS>
Example 3
CLIPS> (clear)
CLIPS>
(deffacts data
(data red green)
(data purple blue)
(data purple green)
(data red blue green)
9. (data purple blue green)
(data purple blue brown))
CLIPS>
(defrule find-data-1
(data red ?x)
(data purple ?x)
=>)
CLIPS>
(defrule find-data-2
(data red $?x)
(data purple $?x)
=>)
CLIPS> (reset)
CLIPS> (facts)
f-0 (initial-fact)
f-1 (data red green)
f-2 (data purple blue)
f-3 (data purple green)
f-4 (data red blue green)
f-5 (data purple blue green)
f-6 (data purple blue brown)
For a total of 7 facts.
CLIPS> (agenda)
0 find-data-2: f-4,f-5
0 find-data-1: f-1,f-3
0 find-data-2: f-1,f-3
For a total of 3 activations.
CLIPS>
& | ~ (Logical AND,OR, NOT)
Example 1
CLIPS> (clear)
CLIPS> (deftemplate data-B (slot value))
CLIPS>
(deffacts AB
(data-A green)
(data-A blue)
(data-B (value red))
(data-B (value blue)))
CLIPS>
(defrule example1-1
(data-A ~blue)
=>)
CLIPS>
(defrule example1-2
10. (data-B (value ~red&~green))
=>)
CLIPS>
(defrule example1-3
(data-B (value green|red))
=>)
CLIPS> (reset)
CLIPS> (facts)
f-0 (initial-fact)
f-1 (data-A green)
f-2 (data-A blue)
f-3 (data-B (value red))
f-4 (data-B (value blue))
For a total of 5 facts.
CLIPS> (agenda)
0 example1-2: f-4
0 example1-3: f-3
0 example1-1: f-1
For a total of 3 activations.
CLIPS>
Example 2
CLIPS> (clear)
CLIPS> (deftemplate data-B (slot value))
CLIPS>
(deffacts B
(data-B (value red))
(data-B (value blue)))
CLIPS>
(defrule example2-1
(data-B (value ?x&~red&~green))
=>
(printout t "?x in example2-1 = " ?x crlf))
CLIPS>
(defrule example2-2
(data-B (value ?x&green|red))
=>
(printout t "?x in example2-2 = " ?x crlf))
CLIPS> (reset)
CLIPS> (run)
?x in example2-1 = blue
?x in example2-2 = red
CLIPS>
Example 3
CLIPS> (clear)
CLIPS> (deftemplate data-B (slot value))
CLIPS>
11. (deffacts AB
(data-A green)
(data-A blue)
(data-B (value red))
(data-B (value blue)))
CLIPS>
(defrule example3-1
(data-A ?x&~green)
(data-B (value ?y&~?x))
=>)
CLIPS>
(defrule example3-2
(data-A ?x)
(data-B (value ?x&green|blue))
=>)
CLIPS>
(defrule example3-3
(data-A ?x)
(data-B (value ?y&blue|?x))
=>)
CLIPS> (reset)
CLIPS> (facts)
f-0 (initial-fact)
f-1 (data-A green)
f-2 (data-A blue)
f-3 (data-B (value red))
f-4 (data-B (value blue))
For a total of 5 facts.
CLIPS> (agenda)
0 example3-3: f-1,f-4
0 example3-3: f-2,f-4
0 example3-2: f-2,f-4
0 example3-1: f-2,f-3
For a total of 4 activations.
CLIPS>
If thenelse
(defrule closed-valves
(temp high)
(valve ?v closed)
=>
(if (= ?v 6)
then
(printout t "The special valve " ?v " is closed!" crlf)
12. (assert (perform special operation))
else
(printout t "Valve " ?v " is normally closed" crlf)))
Alternate,
(defrule closed-valves-number-6
(temp high)
(valve 6 closed)
=>
(printout t "The special valve 6 is closed!" crlf)
(assert (perform special operation)))
(defrule closed-valves-other-than-6
(temp high)
(valve ?v&~6 closed)
=>
(printout t "Valve " ?v " is normally closed" crlf))
(defrule open-valves
(valves-open-through ?v)
=>
(while (> ?v 0)
(printout t "Valve " ?v " is open" crlf)
(bind ?v (- ?v 1))))
CLIPS> (loop-for-count 2 (printout t "Hello world" crlf))
Hello world
Hello world
FALSE
CLIPS>
(loop-for-count (?cnt1 2 4) do
(loop-for-count (?cnt2 1 3) do
(printout t ?cnt1 " " ?cnt2 crlf)))
CLIPS>
(deffunction sign (?num)
(if (> ?num 0) then
(return 1))
(if (< ?num 0) then
(return -1))
0)
13. CLIPS> (sign 5)
1
CLIPS> (sign -10)
-1
CLIPS> (sign 0)
0
CLIPS>
CLIPS>
(deffunction iterate (?num)
(bind ?i 0)
(while TRUE do
(if (>= ?i ?num) then
(break))
(printout t ?i " ")
(bind ?i (+ ?i 1)))
(printout t crlf))
CLIPS> (iterate 1)
0
CLIPS> (iterate 10)
0 1 2 3 4 5 6 7 8 9
CLIPS>
CLIPS> (defglobal ?*x* = 0)
CLIPS> (defglobal ?*y* = 1)
CLIPS>
(deffunction foo (?val)
(switch ?val
(case ?*x* then *x*)
(case ?*y* then *y*)
(default none)))
CLIPS> (foo 0)
*x*
CLIPS> (foo 1)
*y*
CLIPS> (foo 2)
none
CLIPS>
The numberp functionreturnsthe symbol TRUEif itsargumentisa floator integer,otherwise itreturns
the symbol FALSE.
The floatp functionreturnsthe symbol TRUE if itsargumentisa float,otherwiseitreturnsthe symbol
FALSE.
14. The integerpfunctionreturnsthe symbol TRUE if itsargumentisan integer,otherwise itreturnsthe
symbol FALSE.
The stringp functionreturnsthe symbol TRUE if itsargumentisa string,otherwise itreturnsthe symbol
FALSE.
The symbolp functionreturnsthe symbol TRUEif itsargumentisa symbol,otherwiseitreturnsthe
symbol FALSE.Thisfunctionmayalsobe calledusingthe name wordp.
The evenpfunctionreturnsthe symbol TRUE if itsargumentisan evennumber,otherwise itreturnsthe
symbol FALSE.
The oddp functionreturnsthe symbol TRUE if itsargumentis an oddnumber,otherwiseitreturnsthe
symbol FALSE.
The multifieldpfunctionreturnsthe symbolTRUEif itsargumentisa multifieldvalue,otherwise it
returnsthe symbol FALSE.Thisfunctionmayalsobe calledusingthe name sequencep.
The pointerp functionreturnsthe symbol TRUEif its argumentisan external-address,otherwise it
returnsthe symbol FALSE.
The eq functionreturnsthe symbol TRUE if itsfirstargumentisequal invalue toall its subsequent
arguments,otherwiseitreturnsthe symbol FALSE.Note that eqcomparestypesaswell asvalues.Thus,
(eq3 3.0) isFALSE since 3 is an integerand3.0 is a float.
The neq function returns the symbol TRUE if its first argument is not equal in value to all its
subsequent arguments, otherwise it returns the symbol FALSE. Note that neq compares types as
well as values. Thus, (neq 3 3.0) is TRUE since 3 is an integer and 3.0 is a float.
The = functionreturnsthe symbol TRUE if itsfirstargumentisequal invalue toall its subsequent
arguments,otherwiseitreturnsthe symbol FALSE.Note that = comparesonlynumericvaluesandwill
convertintegerstofloatswhennecessaryforcomparison.
The <> functionreturnsthe symbol TRUE if itsfirstargumentis notequal invalue toall its subsequent
arguments,otherwiseitreturnsthe symbol FALSE.Note that <> comparesonlynumericvaluesandwill
convertintegerstofloatswhennecessaryforcomparison.
The >= functionreturnsthe symbol TRUE if for all itsarguments,argumentn-1isgreaterthan or equal
to argumentn,otherwise itreturnsthe symbol FALSE.Note that >= comparesonlynumericvaluesand
will convertintegerstofloatswhennecessaryforcomparison.
The < functionreturnsthe symbol TRUE if forall itsarguments,argumentn-1islessthanargumentn,
otherwise itreturnsthe symbol FALSE.Note that < comparesonlynumericvaluesandwillconvert
integerstofloatswhennecessaryforcomparison.
15. The <= functionreturnsthe symbol TRUE if for all itsarguments,argumentn-1islessthan or equal to
argumentn,otherwise itreturnsthe symbol FALSE.Note that <= comparesonlynumericvaluesandwill
convertintegerstofloatswhennecessaryforcomparison.
Example
CLIPS> (= 3 3.0)
TRUE
CLIPS> (= 4 4.1)
FALSE
CLIPS>
CLIPS> (neq foo bar yak bar)
TRUE
CLIPS> (neq foo foo yak bar)
FALSE
CLIPS> (neq 3 a)
TRUE
CLIPS>
CLIPS> (eq foo bar mumble foo)
FALSE
CLIPS> (eq foo foo foo foo)
TRUE
CLIPS> (eq 3 4)
FALSE
CLIPS>
The and functionreturnsthe symbol TRUEif eachof itsargumentsevaluatestoTRUE, otherwise it
returnsthe symbol FALSE.The and functionperformsshort-circuitedbooleanlogic.Eachargumentof
the functionisevaluatedfrom lefttoright.If anyargumentevaluatestoFALSE,thenthe symbol FALSEis
immediatelyreturnedbythe function.
he or functionreturnsthe symbol TRUEif any of itsargumentsevaluatestoTRUE, otherwise itreturns
the symbol FALSE.The or functionperformsshort-circuitedbooleanlogic.Eachargumentof the function
isevaluatedfromlefttoright.If any argumentevaluatestoTRUE,thenthe symbol TRUE isimmediately
returnedbythe function.
The not functionreturnsthe symbol TRUEif its argumentevaluatestoFALSE, otherwiseitreturnsthe
symbol FALSE.
create$ functionappendsanynumberof fieldstogethertocreate a multifieldvalue.
CLIPS> (create$ hammer drill saw screw pliers wrench)
(hammer drill saw screw pliers wrench)
16. CLIPS> (create$ (+ 3 4) (* 2 3) (/ 8 4))
(7 6 2)
CLIPS>
The nth$ functionwill returnaspecifiedfieldfromamultifieldvalue.
The member$ functionwill tellif asingle fieldvalueiscontainedinamultifieldvalue.
CLIPS> (member$ blue (create$ red 3 "text" 8.7 blue))
5
CLIPS> (member$ 4 (create$ red 3 "text" 8.7 blue))
FALSE
CLIPS> (member$ (create$ b c) (create$ a b c d))
(2 3)
CLIPS>
The str-cat functionwill concatenatesitsargumentsintoasingle string.
The sym-cat functionwill concatenate itsargumentsintoasingle symbol.Itisfunctionallyidentical to
the str-cat functionwiththe exceptionthatthe returnedvalue isa symbol andnota string.
The sub-stringfunctionwill retrieve aportionof a stringfromanotherstring.
The str-indexfunctionwill returnthe positionof astringinside anotherstring.
CLIPS> (str-index "def" "abcdefghi")
4
CLIPS> (str-index "qwerty" "qwertypoiuyt")
1
CLIPS> (str-index "qwerty" "poiuytqwer")
FALSE
CLIPS>
The eval functionevaluatesthe stringasthoughitwere enteredatthe commandprompt.
Example
CLIPS> (eval "(+ 3 4)")
7
CLIPS> (eval "(create$ a b c)")
(a b c)
CLIPS>
Files
he open function allows a user to open a file from the RHS of a rule and attaches a logical name
to it. This function takes three arguments: (1) the name of the file to be opened; (2) the logical
name which will be used by other CLIPS I/O functions to access the file; and (3) an optional
mode specifier. The mode specifier must be one of the following strings:
17. Mode Means
"r" read access only
"w" write access only
"r+" read and write access
"a" append access only
"wb" binary write access
Example
CLIPS> (open "myfile.clp" writeFile "w")
TRUE
CLIPS> (open "MS-DOSdirectoryfile.clp" readFile)
TRUE
CLIPS>
The close functionclosesafile streampreviouslyopenedwiththe opencommand.The file isspecified
by a logical name previouslyattachedtothe desiredstream.
Example
CLIPS> (open "myfile.clp" writeFile "w")
TRUE
CLIPS> (open "MS-DOSdirectoryfile.clp" readFile)
TRUE
CLIPS> (close writeFile)
TRUE
CLIPS> (close writeFile)
FALSE
CLIPS> (close)
TRUE
CLIPS> (close)
FALSE
CLIPS>
The function printoutallowsoutputtoa device attachedtoa logical name.The logical name mustbe
specifiedandthe device musthave beenpreparedpreviouslyforoutput(e.g.,afile mustbe opened
first).Tosendoutputto stdout, use a t forthe logical name.If the logical name nil isused,the printout
functiondoesnothing.
Example
CLIPS> (printout t "Hello there!" crlf)
Hello There!
CLIPS> (open "data.txt" mydata "w")
TRUE
CLIPS> (printout mydata "red green")
CLIPS> (close)
18. TRUE
The read functionallowsausertoinputinformationforasingle field.All of the standardfieldrules(e.g.,
multiple symbolsmustbe embeddedwithinquotes) apply.
CLIPS> (open "data.txt" mydata "w")
TRUE
CLIPS> (printout mydata "red green")
CLIPS> (close)
TRUE
CLIPS> (open "data.txt" mydata)
TRUE
CLIPS> (read mydata)
red
CLIPS> (read mydata)
green
CLIPS> (read mydata)
EOF
CLIPS> (close)
TRUE
CLIPS>
The readline functionissimilartothe read function,butitallowsawhole stringtobe inputinsteadof a
single field.Normally, readwill stopwhenitencountersadelimiter.The readline functiononlystops
whenitencountersacarriage return,a semicolon,oranEOF. Anytabsor spacesinthe inputare
returnedby readline asa part of the string.The readline functionreturnsastring.
Example
CLIPS> (open "data.txt" mydata "w")
TRUE
CLIPS> (printout mydata "red green")
CLIPS> (close)
TRUE
CLIPS> (open "data.txt" mydata)
TRUE
CLIPS> (readline mydata)
"red green"
CLIPS> (readline mydata)
EOF
CLIPS> (close)
TRUE
CLIPS>
The get-char functionallowsasingle charactertobe retrievedfromalogical name.
Example
19. CLIPS> (open example.txt example "w")
TRUE
CLIPS> (printout example "ABC" crlf)
CLIPS> (close example)
TRUE
CLIPS> (open example.txt example)
TRUE
CLIPS> (get-char example)
65
CLIPS> (format nil "%c" (get-char example))
"B"
CLIPS> (get-char example)
67
CLIPS> (get-char example)
10
CLIPS> (get-char example)
-1
CLIPS>
(progn (printout t "Press any character to continue...")
(get-char t))
Press any character to continue...
13
CLIPS>
The read-numberfunctionallowsauserto inputa single numberusingthe localizedformat(if one has
beenspecifiedusingthe set-locale function).If alocalizedformathasnotbeenspecified,thenthe C
formatfor a numberisused.
Example
CLIPS> (read-number)
34
34
CLIPS> (read-number)
34.0
34.0
CLIPS> (read-number)
23,0
"*** READ ERROR ***"
CLIPS>