我真的不知道如何处理规则,我讨厌prolog,我所做的就是,我列出了事实
使用结构化数据对象来表示书籍。描述a的信息 书是:
该类型应该是以下之一{犯罪,戏剧,喜剧,研究,小说, 参考}。
您可以将图书馆列为图书清单。 编写一套规则来推荐一套书籍:
事实:
规则:它是如何做规则的,所有我都要问,例如,假期第一条规则的代码应该是:holidayPages(400,Y): - book(_,_,Y),400
答案 0 :(得分:3)
Head :- Body.
对于头部,您可以选择化合物或原子。身体可以 一个Prolog查询。查询基本上来自:
- Invocations: Call some other rules with bound or unbound arguments
- Conditions: Unification =, Arithmetic =:=, <, etc.. Lexical @<, ==, etc..
- Connectives: And ,, Or ;, Not \+ etc..
- Everything else that is found in the handbook of your Prolog system.
如果您有规则的口头规范。首先寻找主要的调用, 然后是条件,最后是连接词。这是一个例子:
Holidays (book should be less than 400 pages and not be a study or reference book).
我明白了:
Main invocation: book(Title, Author, Genre, Pages)
Condition_1: Pages < 400
Condition_2: Genre = study
Condition_3: Genre = reference
Connectives: Condition_1, \+ (Condition_2 ; Condition_3)
如果我将所有这些放在一起,我会得到以下身体,你很容易 首先在顶层测试作为查询:
?- book(Title, Author, Genere, Pages), Pages < 400, \+ (Genre = study; Genre = reference).
现在你可以把它变成一个规则。注意使用下划线(_) 未使用的调用变量,否则Prolog系统会咆哮你 单身警告:
holidays(Title) :-
book(Title, _, Genre, Pages),
Pages < 400,
\+ (Genre = study; Genre = reference).
这是一个很好的功课,你有一个好老师。玩得开心。
再见