Prolog101(01)

最近看了下prolog,整理如下:

比起c,java,C#来,prolog与sql的逻辑更相似一些:
a、输入初始数据(sql建表,及表中数据输入)
b、描述关系(sql存储过程)
c、进行查询(查询表,调用存储过程)
d、只需要告诉prolog,需要查什么,不关心如何去查询(比如sql如何查找数据,是db服务器的问题,我们一般不关心如何具体实现)

比如,首先进行a,b两步:

% swipl -s hello.pl
% author neohope

%输入数据,like左边是人,右边是爱好
%请注意"."
like(wangwu,fishing).
like(wangwu,smoking).
like(wangwu,binglang).

like(jiliang,riding).
like(jiliang,smoking).
like(jiliang,soccer).

like(guosir,soccer).

like(linlin,riding).
like(linlin,smoking).

like(zhaowen,smoking).

like(hansen,sleep).

%描述关系:当路人甲X,与路人乙Y,同时喜欢一种项目时Z,他们可以一起玩(paly)
%请注意"."
play(X,Y):-like(X,Z),like(Y,Z).

然后进行查询:

%查询wangwu,喜欢的项目
%请注意".",";"要手工输入
1 ?- like(wangwu,X).
X = fishing ;
X = smoking ;
X = binglang.

%查询喜欢riding项目的人
%请注意".",";"要手工输入
2 ?- like(X,riding).
X = jiliang ;
X = linlin.

%查询,jiliang与lilin是否喜欢一起玩
3 ?- play(jiliang,linlin).
true .

%查询,jiliang与hansen是否喜欢一起玩
4 ?- play(jiliang,hansen).
false.

%为什么呢?查一下hansen喜欢什么运动
5 ?- like(hansen,X).
X = sleep.
%原来他只喜欢睡觉^_^,不喜欢运动,当然没人和他玩咯

有些概念没?那咱们进入下一章。

Leave a Reply

Your email address will not be published. Required fields are marked *

*