CLIPS:如何将多字段值评估为整数

时间:2016-01-26 10:58:12

标签: clips expert-system

我很难正确评估多字段值的整数值。

最终我需要的是对仅包含整数的多时隙进行模式匹配,并能够判断“列表”是否按升序排列。

到目前为止我所拥有的:

(defclass status 
    (is-a USER)
    (role concrete)
    (pattern-match reactive)
    (multislot numbers
        (create-accessor write)
        (type INTEGER) 
        (range 1 ?VARIABLE) 
        (default 1)
     )
)

(defrule asc
    ?st <- (object (is-a status) (numbers $?n))
    (test (> (length ?n) 2))
    (test (< (first$ ?n) (rest$ ?n)))
=> 
    (printout t "List " ?n " is ascending" crlf)
)

(make-instance of status (numbers 1 2 3))

我明白这可能不是扩展多时隙并为(&lt;)填充参数的方法,但我似乎无法找到正确的方法。 即使参数正确扩展,它仍然说它需要一个整数参数,但是

(first$ ?n)

不评估为整数。

我的问题是: 如何获取值列表的值并将其“解析”为整数? 其次,如何扩展这些值以使它们成为(&lt;)的参数并告诉列表是否按升序排列?

1 个答案:

答案 0 :(得分:1)

使用nth $函数从多字段中检索单个值。对于第一个值,您使用(第n $ 1?n)。但是,在您的规则中,您需要做的就是使用expand $函数将数字槽的值拼接到&lt;的参数列表中。功能

{{1}}