最近看了下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. %原来他只喜欢睡觉^_^,不喜欢运动,当然没人和他玩咯 有些概念没?那咱们进入下一章。