gpt4 book ai didi

prolog - 我可以在谓词中使用变量的 subtitude 仿函数吗

转载 作者:行者123 更新时间:2023-12-04 18:23:13 26 4
gpt4 key购买 nike

我是 prolog 的新手,并且正在使用 BProlog。

我一直在阅读一些示例程序来对一组相关数据执行查询。但是为了从结构相似的事实中推断,他们写了许多谓词,如search_by_name。 , search_by_point , 部分重复。

% working search in example
search_by_name(Key,Value) :-
Key == name,
sname(ID,Value),
point(ID,Point),
write(Value),write(Point),nl.

当我尝试用更通用的版本替换它们时:
% a more general search I want to write
% but not accepted by BProlog
search_by_attr(Key,Value) :-
Key(ID,Value),
sname(ID,Name),
point(ID,Point),
write(Name),write(Point),nl.

出现错误:
| ?- consult('students.pl')
consulting::students.pl
** Syntax error (students.pl, 17-21)
search_by_attr(Key,Value) :-
Key<<HERE>>(ID,Value),
sname(ID,Name),
point(ID,Point),
write(Name),write(Point),nl.

1 error(s)

我是不是做错了,或者在序言中这种替代是不可能的?

代码和示例数据可以在 https://gist.github.com/2426119 找到

最佳答案

我不知道任何接受变量仿函数的 Prolog。
有call/N,或univ+call/1。

search_by_attr(Key,Value) :-
call(Key, ID, Value), % Key(ID,Value)
...

或者
search_by_attr(Key,Value) :-
C =.. [Key, ID, Value], % univ
call(C), % Key(ID,Value)
...

关于prolog - 我可以在谓词中使用变量的 subtitude 仿函数吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10240544/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com