Clips笔记 3

谓词函数

谓词函数被定义为任何可返回符号TRUE或者FALSE的函数。

谓词函数有两种类型:

  • 预定义谓词函数,系统提供的,直接调用
  • 用户自定义函数,使用C或其它语言与Clips通信的
(and (> 1 2) (< 4 3))  ; FALSE
(or (> 1 2) (< 3 4))  ; TRUE
(not (< 1 2)) ; FALSE

测试条件元素

这点类似于shell的test语句,也是使用test关键字实现的。基本语法格式为:

(test <predicate-function>)

<predicate-function>返回不是FALSE的值时,测试条件通过。规则只有满足测试条件和其他模式时,才会触发。

代码示例:

(deftemplate person
    (slot age)
    (slot name)
)

(defrule myrule
    (person (name ?name) (age ?age))
    (test (> ?age 18))
=>
    (printout t "Adult" crlf)
)

(assert (person (name Tom) (age 20)))
(run)

代码输出Adult信息。

字段约束

这是在输入的时候就直接添加约束,而不是另外添加判断。给出一个代码示例:

(defrule myrule
    (size ?size&:(> ?size 0))
=>
    (printout t "OK" crlf)
)

(assert (size 1))
(assert (size 0))
(run)

代码只会有一个OK输出。

在某些情况下,需要字段的返回值进行约束,此时使用=(<pridiction>)的模式。比如:

= (mod ?size 4)

表示此字段等于?size模4的值。

逻辑连接词

基本的几个连接词:

  • or:或
  • and:与
  • not:非
  • exists:存在至少一个事实与模式匹配,不管实际匹配该模式的事实总数。
  • forall:匹配所有的规则

这些留作后期补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值