Форум программистов, компьютерный форум, киберфорум
CLIPS
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/34: Рейтинг темы: голосов - 34, средняя оценка - 4.76
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182

Непонятное сообщение об ошибке (deffacts .)

06.01.2018, 19:36. Показов 7059. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Переделываю прогу из Prolog`а (из арабских в римские, и обратно) ...
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
(defrule ArabRim  
   =>
(deffacts chisla
(zamena (arab 1000) (rim "M") (q 1))   (zamena (arab 900) (rim "CM") (q 2))
(zamena (arab 500)  (rim "D") (q 1))   (zamena (arab 400) (rim "CD") (q 2))    
(zamena (arab 100)  (rim "C") (q 1))   (zamena (arab 90)  (rim "XC") (q 2))
(zamena (arab 50)   (rim "L") (q 1))   (zamena (arab 40)  (rim "XL") (q 2))
(zamena (arab 10)   (rim "X") (q 1))   (zamena (arab 9)   (rim "IX") (q 2))
(zamena (arab 5)    (rim "V") (q 1))   (zamena (arab 4)   (rim "IV") (q 2))
(zamena (arab 1)    (rim "I") (q 1)))
(zamena (arab ?arab) (rim "D"))
(printout t " arab = " ?arab crlf))
CLIPS> (load "C:/CLIPS/i_programmy/ArabRim.clp")
*
[EXPRNPSR3] Missing function declaration for deffacts.

ERROR:
(defrule MAIN::ArabRim
=>
(deffacts

FALSE
CLIPS>

Что значит - Missing function declaration for deffacts.(Отсутствует объявление функции для деффактов.)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.01.2018, 19:36
Ответы с готовыми решениями:

Непонятное сообщение об ошибке
Подскажите пожалуйста что это такое? Что он считает?

Непонятное сообщение об ошибке от компилятора
Здравствуйте, Друзья! При исполнении следующего кода на СИ: #include <conio.h> #include <graphics.h> void _ (int x,int...

Непонятное поведение дебагера при ошибке
Добрый день. Проблема возникла в том что дебагер не указывает точное место ошибки. При простом коде (Ошибка сделана специально)...

6
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38203 / 21135 / 4310
Регистрация: 12.02.2012
Сообщений: 34,740
Записей в блоге: 14
06.01.2018, 21:05
Я думаю, что имя deffacts употреблено, как имя функции, а определения этой функции нет.
0
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
10.01.2018, 18:19  [ТС]
Вот код:
Lisp
1
2
3
4
5
6
7
(defrule ArabRim    =>
;(bind ?arab #)
(assert (slot arab)  (slot rim) (slot q))
(assert (arab 1000)  (rim "M")  (q 1))
(assert (arab 900)   (rim "CM") (q 2))
(assert (arab ?arab) (rim "M"))
(printout t " arab = " ?arab crlf))
при (bind ?arab #)

CLIPS> (load "C:/CLIPS/i_programmy/ArabRim.clp")
*
TRUE
CLIPS> (reset)
CLIPS> (run)
arab = #
CLIPS>


Таким образом код проходит статическую проверку ...
Но при ;(bind ?arab #)

[I]CLIPS> (load "C:/CLIPS/i_programmy/ArabRim.clp")
*
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 Undefined variable arab referenced in RHS of defrule.
 
ERROR:
(defrule MAIN::ArabRim
   =>
   (assert (slot arab)
           (slot rim)
           (slot q))
   (assert (arab 1000)
           (rim "M")
           (q 1))
   (assert (arab 900)
           (rim "CM")
           (q 2))
   (assert (arab ?arab)
           (rim "M"))
   (printout t " arab = " ?arab crlf))
 
FALSE
CLIPS>
Вопрос - почему не работает (assert (arab ?arab) (rim "M")), и не происходит
присвоение переменной ?arab значения 1000 ...
0
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
13.01.2018, 15:05  [ТС]
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
(defrule ArabRim  =>
;(load "AR.clp")
;(bind ?arab 0)
 
(assert (deftemplate zamena
(assert (slot arab)  (slot rim) (slot q))))
 
(assert (deffacts chisla
(assert (zamena  (assert (arab 1000) (rim "M")  (q 1))))
(assert (zamena  (assert (arab 900)  (rim "CM") (q 2))))))
 
(assert (zamena (assert (arab ?arab) (rim "M")  (q 1))))
(printout t " arab = "  ?arab crlf))
Вопрос всё тот же ...
0
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
16.01.2018, 04:54  [ТС]
Может быть кому то пригодится:
Lisp
1
2
3
4
5
6
7
(deffacts chisla
(zamena (assert
(arab 1000) (rim "M")  (q 1)
(arab 900)  (rim "CM") (q 2)
;....................................................
(arab 1)    (rim "I")  (q 1)
)))
Только одно assert для всех фактов ...
Но только если конструкция вынесена в
отдельный файл (load "___.clp") ...
1
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
18.01.2018, 01:10  [ТС]
Lisp
1
2
3
4
5
6
7
(defrule ArabRim1  =>
;(bind ?arab 0)
(assert (slot arab) (slot rim) (slot q))
(assert (arab 1000) (rim "M")  (q 1)
        (arab 900)  (rim "CM") (q 2))
(assert (arab ?arab) (rim "M") (q 1))
(printout t " arab = "  ?arab crlf))
Можно и так ... А результата всё равно нет!!!
0
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
21.01.2018, 21:24  [ТС]
Lisp
1
2
3
4
5
6
(deffacts chisla
(zamena (arab 1000) (rim "M")  (q 1))
(zamena (arab 900)  (rim "CM") (q 2))
.....................................................
(zamena (arab 4)    (rim "IV") (q 2))
(zamena (arab 1)    (rim "I")  (q 1)))
Lisp
1
2
3
4
5
6
7
8
9
(deftemplate zamena
(slot arab) (slot rim) (slot q))
;------------------------------------
(defrule ArabRim 
(zamena (arab ?arab) (rim ?rim) (q 1))
    =>
(printout t " arab = " ?arab "  rim = " ?rim crlf))
;------------------------------------
(load "chisla.clp")
CLIPS> (load "C:/CLIPS/i_programmy/ArabRim/ArabRim.clp")

[CSTRCPSR4] Cannot redefine deftemplate zamena while it is in use.

ERROR:
(deftemplate MAIN::zamena
*
[CSTRCPSR1] Expected the beginning of a construct.

FALSE
CLIPS> (reset)
CLIPS> (run)
arab = 1 rim = I
................................
arab = 1000 rim = M
CLIPS>

Вопрос - код выдаёт правильный результат, но при этом пишет
сообщения об ошибках ... Почему ?!!! ....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.01.2018, 21:24
Помогаю со студенческими работами здесь

Непонятное сообщение
Здравствуйте, хотела удалить папку и вышло сообщение, что я должна попросить разрешение у какого-то "система". У меня нет никаких...

Непонятное сообщение
Что это такое и откуда оно лезет?

Непонятное сообщение
Вечер добрый! Подскажите пожалуйста. Собрала системник, все работает, установила Windows. Но при каждом включении компьютера и загрузки...

Непонятное сообщение
По нажатию на кнопки в Представлении выскакивает сообщение. При этом на кнопке не чего не висит и на форме по событию OnLoad. Где его могли...

непонятное сообщение НННН<>()
Запрос1 = СоздатьОбъект(&quot;Запрос&quot;); ТекстЗапроса1 = &quot; |Период С НачДата По КонДата; |Обрабатывать НеПомеченныеНаУдаление; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru