标签: lambda-prolog

?序言拒绝假设推理查询?

我怀疑 ?Prolog 的主要实现 teyjus 可能有点被遗弃,但是 ?Prolog 是一个迷人的 Prolog,它应该让你使用高阶逻辑、假设推理和其他东西,这就是为什么我尝试使用它。

文件“example.sig”:

sig example.

kind person, language type.

type hans person.
type german, french, italian language.

type grade person -> o.
type take person -> language -> o.
Run Code Online (Sandbox Code Playgroud)

文件“example.mod”:

module example.

(grade P) :- (take P german), (take P french).
(grade P) :- (take P german), (take P italian).

take hans french.
Run Code Online (Sandbox Code Playgroud)

但是,当我编译和加载它时,虽然它似乎可以工作,但假设的推理查询被拒绝:

[example] ?- take X Y.

The answer substitution:
Y = french
X = hans

More solutions (y/n)? y

no (more) …
Run Code Online (Sandbox Code Playgroud)

prolog logic-programming lambda-prolog

3
推荐指数
1
解决办法
127
查看次数

Curry 中的 N-ary 函数和 Prolog 中的 N+1-ary 关系有什么区别吗?

Curry与它的堂兄 Haskell 不同,它允许您为一个函数赋予多个值:

foo 1 2 = 3
foo 1 2 = 4
Run Code Online (Sandbox Code Playgroud)

它确实回溯(或其他一些搜索)来探索这种非确定性的影响。

这使它类似于 Prolog(特别是?Prolog由于类型系统和语法),您可以在其中声明

foo 1 2 3.
foo 1 2 4.
Run Code Online (Sandbox Code Playgroud)

在语义上,N 元Curry 函数和N+1 元Prolog 关系之间有什么区别吗?

functional-programming prolog logic-programming curry lambda-prolog

2
推荐指数
1
解决办法
84
查看次数