Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевести программу с Turbo Prolog на SWI, может ли кто помочь 
V
    Опции темы
cherep
Дата 20.5.2007, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 11.1.2006
Где: Москва

Репутация: 2
Всего: 4



Пишу реферат по экспертным системам. Вот тут в конце есть реализация примера экспертной системы. Не мог бы кто помочь переложить ее на SWI-Prolog ?
В частности могу сформулировать несколько конкретных вопросов:

Там юзается write("Bla-bla") в SWI это выдает массив со значениями а не строку. Но тут я вроде просек, надо брать в одинарных ковычках.
Потом вот вопрос. Кто нибудь может разрулить что есть такое assert, retractall. Я так понял, это предикаты для видоизменения базы знаний.
Проблема такая: в SWI похоже нет consult/2, retractall/2 (есть только с арностью 1). Как же тогда делать?

И кроме того на попытку сделать
Код

25 ?- [men].
% men compiled 0.00 sec, 380 bytes

Yes
26 ?- man(joe).

Yes
27 ?- retract(man(joe)).
ERROR: retract/1: No permission to modify static_procedure `man/1'

Спасибо.

Это сообщение отредактировал(а) cherep - 20.5.2007, 20:17
PM MAIL WWW ICQ   Вверх
cherep
Дата 20.5.2007, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 11.1.2006
Где: Москва

Репутация: 2
Всего: 4



Впрочем одну проблему вроде просек: для того, чтоб предикаты можно было модифицировать их надо объявлять как dynamic
Код

:- dynamic
 man/1.

man(pit).
man(joe).

start:-
 retract(man(joe)).

PM MAIL WWW ICQ   Вверх
Cobalt
Дата 20.5.2007, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 31.8.2006

Репутация: нет
Всего: 1



asserta(predicat) - команда добавления предиката в базу данных в начало, assertz(predicat) - в конец
retract(predicat) - удаляет предикат из бд
consalt(filename) - загружает бд
что такое consult/2, retractall/2 понятия не имею 

--------------------
Стоишь на берегу И чувствуешь соленый запах ветра, Что веет с моря,И знаешь что свободен ты, и жизнь лишь началась....И губы жжет.. подруги поцелуй, Пропитанный слезой!
PM MAIL ICQ   Вверх
Artemios
Дата 21.5.2007, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 14.8.2006
Где: Саратов, Россия

Репутация: 6
Всего: 50



Цитата(Cobalt @  21.5.2007,  00:56 Найти цитируемый пост)
consalt(filename) - загружает бд
что такое consult/2, retractall/2 понятия не имею 

Странно...
У меня swi, и именно consult/1 загружает бд
(может вы просто не поняли вопроса, в прологе традиционно арность предикатов обозначают как имя_предиката/арность)
retractall/1 - удаляет из бд все факты, унифицирующиеся с аргументом.
С арностью 2 ни того, ни другого в swi действительно нет -- здесь работа только с текущей базой (в Turbo-прологе из примера cherep вторым аргументом можно указывать конкретную базу)

Добавлено через 11 минут и 53 секунды
cherep, кстати, посмотрел еще раз на пример, понял, что это "Самообучающийся определитель животных" smile
Что-то подобное я тоже как-то набрасывал для swi, только примитивней.
Прикрепляю файл, только он в кодировке utf8, если нужно под win -- перекодируй в cp1251.

Это сообщение отредактировал(а) Artemios - 21.5.2007, 11:27

Присоединённый файл ( Кол-во скачиваний: 51 )
Присоединённый файл  animals.pro 2,30 Kb


--------------------
fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ]
PM MAIL   Вверх
cherep
Дата 21.5.2007, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 11.1.2006
Где: Москва

Репутация: 2
Всего: 4



Artemios, спасибо за разъяснения и пример.
PM MAIL WWW ICQ   Вверх
Cobalt
Дата 21.5.2007, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 31.8.2006

Репутация: нет
Всего: 1



я писал просто в визуал 5.2, я там вообще не смог БД загрузить, прога загружается и пишет "ошибка программы 7002" если не ошибаюсь, что за дела  smile  мож кто знает, пробовал еще подругому, как в книжке написано, тоже самое
--------------------
Стоишь на берегу И чувствуешь соленый запах ветра, Что веет с моря,И знаешь что свободен ты, и жизнь лишь началась....И губы жжет.. подруги поцелуй, Пропитанный слезой!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума Prolog
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Prolog | Следующая тема »


 




[ Время генерации скрипта: 0.0474 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.