2017-01-27 11 views
0

訪問する。基本的なクリップの使用

私がこれまでに持っているものはかなり基本的なものです。

;;;************* 
;;;* EATERIES * 
;;;************* 

(deftemplate restaurant 
    (slot name 
     (type SYMBOL) 
     (default ?NONE)) 
    (slot food-served 
     (type SYMBOL) 
     (allowed-symbols salad coffee vegan breakfast burgers) 
    (default blank))) 

どのようにして食べ物の選択肢がある特定のレストランを定義すればよいですか?

私は食べ物をどのように指定しますか?

どのように私は、例えば、ルールを定義します

IF craving-salad THEN go-to-salad-bar 

答えて

0

私はあなたがレストランや人物テンプレートでモデルを作成し、必要なロジックを管理するために、いくつかのルールを追加することをお勧めします。 CLIPSではたくさんの例が見つかります。 CLIPSの仕組みを理解するのに何度かかかった。マニュアルを読むことは良い出発点であり、例を見ることは基本的なことです。 ここで私はあなたのためにテストした小さなスクリプトです。それをCLIPSで実行します。

(deftemplate restaurant 
    (slot name 
     (type SYMBOL)) 
    (slot food-served 
     (type SYMBOL) 
     (allowed-symbols salad coffee vegan breakfast burgers))) 

(deftemplate person 
    (slot name 
     (type STRING)) 
    (slot craving 
     (type SYMBOL) 
     (allowed-symbols salad coffee vegan breakfast burgers))) 

(defrule suggestion 
    (restaurant (food-served ?food) (name ?restaurantName)) 
    (person (name ?personName) (craving ?craving)) 
    (test (eq ?food ?craving)) 
    => 
    (bind ?message (format nil "It seems that %s is craving %s. I suggest him to go to %s!" ?personName ?food ?restaurantName)) 
    (printout t ?message crlf))   


(assert (restaurant (name McDonalds) (food-served burgers))) 
(assert (restaurant (name Dannys) (food-served breakfast))) 
(assert (restaurant (name KingOfSalads) (food-served salad))) 
(assert (restaurant (name CoffeeParadise) (food-served coffee))) 

(assert (person (name "Nicola") (craving burgers))) 
(assert (person (name "Rebecca") (craving salad))) 
(assert (person (name "James") (craving breakfast))) 

(run) 
(exit) 

さようなら ニコラ

+0

非常ニコラありがとうございました。私は非常に混乱構文を見つけるが、私はいくつかの例を介して動作します。あなたの例では、私はエラーが発生します: '[CSTRCPSR1]構造体の開始を期待'。 – Mike

+0

Nevermind @nico、問題が見つかりました。ご協力いただきありがとうございます。 – Mike

+0

答えを有用なものとしてマークすることを忘れないでください(もしそうなら);) –

関連する問題