获取所有谓词是动词并且是谓词
Get all the predicates that are verb and are a predicate
我在 .pl 文件中有以下内容:
...
verb(love).
verb(think).
love(mom, dad).
noun(head).
insert(Pre):- Pre =.. [N | Param], assertz(verb(N)), assertz(Pre).
insertAll:- insert(walk(henry, park)), insert(punch(ken, henry)).
:-insertAll.
getAll(N):-verb(N), current_predicate(N/2).
...
我想获取所有谓词是动词并且是元数为 2 的谓词
getAll(N).
输出:
Result = [love].
您的代码运行完美,唯一的问题是您需要指定动词是动态的。
您的 .pl 文件
...
:-dynamic verb/1
verb(love).
verb(think).
love(mom, dad).
noun(head).
insert(Pre):- Pre =.. [N | Param], assertz(verb(N)), assertz(Pre).
insertAll:- insert(walk(henry, park)), insert(punch(ken, henry)).
:-insertAll.
getAll(N):-verb(N), current_predicate(N/2).
...
查询
getAll(N).
输出
N = love ;
N = walk ;
N = punch.
我在 .pl 文件中有以下内容:
...
verb(love).
verb(think).
love(mom, dad).
noun(head).
insert(Pre):- Pre =.. [N | Param], assertz(verb(N)), assertz(Pre).
insertAll:- insert(walk(henry, park)), insert(punch(ken, henry)).
:-insertAll.
getAll(N):-verb(N), current_predicate(N/2).
...
我想获取所有谓词是动词并且是元数为 2 的谓词
getAll(N).
输出:
Result = [love].
您的代码运行完美,唯一的问题是您需要指定动词是动态的。
您的 .pl 文件
...
:-dynamic verb/1
verb(love).
verb(think).
love(mom, dad).
noun(head).
insert(Pre):- Pre =.. [N | Param], assertz(verb(N)), assertz(Pre).
insertAll:- insert(walk(henry, park)), insert(punch(ken, henry)).
:-insertAll.
getAll(N):-verb(N), current_predicate(N/2).
...
查询
getAll(N).
输出
N = love ;
N = walk ;
N = punch.