我很难正确评估多字段值的整数值。
最终我需要的是对仅包含整数的多时隙进行模式匹配,并能够判断“列表”是否按升序排列。
到目前为止我所拥有的:
(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;)的参数并告诉列表是否按升序排列?
答案 0 :(得分:1)
使用nth $函数从多字段中检索单个值。对于第一个值,您使用(第n $ 1?n)。但是,在您的规则中,您需要做的就是使用expand $函数将数字槽的值拼接到&lt;的参数列表中。功能
{{1}}