确定的子句语法

时间:2012-11-24 22:13:49

标签: prolog dcg

我正在尝试编写一个明确的类语法,它采用单例列表并确定它是1还是0.它会一直返回false而我无法弄清楚它为什么不起作用。

zeroorone-->validnum.
validnum-->[0].
validnum-->[1].

2 个答案:

答案 0 :(得分:0)

您发布的语言符合

0

1

但不是

[0,0,1,1,0,1,1,1,0,0]

是你所期望的吗?

短语(zeroorone,X)。 应该回复

X = [0]。 X = [1]。

现在,你也可能会混淆'代码'风格的Prolog字符串

“100”,[1,0,0] 前者是['1','0','0']

您的代码失败的示例将非常有用

答案 1 :(得分:0)

Anniepoo是对的。这适用于SWI-Prolog。

我将您的代码放入文件a.pl并使用consult(a)加载它。然后我可以运行以下内容。

zeroorone([0], []).
true .

zeroorone([1], []).
true .

正如Anniepoo所说,在按下回车然后空格以获得第二个答案后,运行以下作品

phrase(zeroorone, X).
X = [ 0 ] ;
X = [ 1 ].

然而,正如她所说,除了两个列表[0]和[1]之外,它不起作用。

e.g。

zeroorone([1,0,0], []).
false.

为了获得更好的答案,您可能需要指定实际需要的内容。