У меня есть определение с одним слотом deftemplate с ограничением на разрешенные символы. Если я прямо утверждаю факт с верхнего уровня, ограничения работают как ожидалось (т. Е. Я могу использовать только один из разрешенных символов). Однако, если я делаю это из-за дефиса, ограничение фактически не существует (см. Вывод кода ниже). Как принудительно использовать ограничение из моей функции?CLIPS: утверждение фактов изнутри функции не учитывает ограничения шаблона
CLIPS> (clear)
CLIPS> (deftemplate test-template (slot myslot (type SYMBOL) (allowed-symbols A B C)))
CLIPS> (deffunction test-function (?s) (assert (test-template (myslot ?s))))
CLIPS> (assert (test-template (myslot X)))
[CSTRNCHK1] A literal slot value found in the assert command
does not match the allowed values for slot myslot.
CLIPS> (test-function X)
<Fact-1>
CLIPS> (facts)
f-0 (initial-fact)
f-1 (test-template (myslot X))
For a total of 2 facts.
CLIPS>