Мне просто интересно, какая разница между разделами «факты» и «предикаты» в прологе?Разница между (факты и предикаты) && (Single and Determ)
и в чем разница между ключевым словом "single" и "define"?
Мне просто интересно, какая разница между разделами «факты» и «предикаты» в прологе?Разница между (факты и предикаты) && (Single and Determ)
и в чем разница между ключевым словом "single" и "define"?
Просто указать на очевидное: «Раздел« Факты »- это факты, факты - предикаты, которые всегда верны, используются для описания некоторых свойств.
Single
и determ
являются «Режим факт», используемый при необходимости в декларации фактов, Single
означает тот факт, всегда имеет одну и лишь одно значение, determ
означает тот факт, может иметь ноль или одно значение.
спасибо, я понял вторую часть, , но про первую часть, я просто понимаю, что я не могу использовать «Single» и «детерминировать» ключевые слова в разделе " предикаты, и я могу использовать только «неопределенное» ключевое слово в разделе «предикаты». , но в разделе «факты» я могу использовать «детермический», «одиночный», «незанятый» , поэтому, когда я буду использовать раздел предикатов, если он можно заменить секцией «факты»? –
вы не можете заменить предикаты фактами, потому что, как я писал, это разные вещи, факт является предикатом, но предикат не всегда является фактом! Факт всегда прав, как 'sun (желтый) ', но предикат может быть истинным или ложным, это зависит от того, какие термины содержат, как правило, это то, что вы оцениваете, например' sun (Color) '(' Color' теперь является переменной). – rok
Факт в прологе является замена predicat как таблицы в БД таблице (Column1, COLUMN2, ...) действительно Facts
принимает форму, как Fact(Arg1,Arg2)
, который дает нам {истина, ложь} значения только для определенных констант («()»
так что Факт является сложным термином или предикатом аргументов, действительно, Args
не являются переменными, являются отдельными константами.
Пример
father(fathername,childname).
Правило также замены предиката принимает вид
rule_type1(+In_Args,?Out_Args) :- body .
rule_type2(+In_Args) :- body . % (true,false)
rule_type3 :- body .
его заказ генерировать данные из фактов или из logique правил, полученных в тело через Querys
пример
max(X,Y,Z) :- X>=Y -> Z=X ; Z=Y .
?- max(3,5,Z). /* give us */ Z=5
в зрительно-прологе Facts
может быть объявлен с несколькими дополнительными ключевыми словами:
Фактов объявляемых с determ ключевых слов.
Ключевое слово determ
определяет, что база данных фактов может содержать только один экземпляр факта (предикат базы данных) fact_N (...), объявленного с помощью этого ключевого слова. Поэтому, если вы попытаетесь установить assert
один и тот же факт в базу данных, механизм Visual Prolog создаст ошибку времени выполнения. (1041 Утверждение факту, объявленному как определение, но факт уже существует). example
Факты, указанные ключевым словом.
Ключевое слово single
перед фактом fact_N декларация определяет, что один и только один экземпляр факта всегда должен существовать:
Поскольку единичные факты должны быть уже известно, когда программа вызывает цель; поэтому единичные факты должны быть инициализированы в разделе статей в исходном коде программы.
Например:
FACTS
single singleFact(STRING, STRING)
CLAUSES
singleFact("","").
, что пролог вы используете? 'single',' define' не являются ключевыми словами, которые я знаю – CapelliC
Visual Prolog 5.2 –