I am trying to write a definite class grammar that takes a singleton list and determines if it is a 1 or 0.It keeps returning false and i can't figure out why it is not working.
zeroorone-->validnum.
validnum-->[0].
validnum-->[1].
您发布的语言匹配
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']
您的代码失败的示例将很有用
安妮普是对的。这适用于 SWI-Prolog。
我将您的代码放入文件 a.pl 并使用咨询(a)加载它。然后我可以运行以下。
zeroorone([0], []).
true .
zeroorone([1], []).
true .
正如 Anniepoo 所说,在您按 Enter 后运行以下工作,然后按空格来获得第二个答案
phrase(zeroorone, X).
X = [ 0 ] ;
X = [ 1 ].
但是,正如她所说,除了两个列表 [0] 和 [1] 之外,它对任何东西都不起作用。
例如
zeroorone([1,0,0], []).
false.
为了获得更好的答案,您可能需要指定实际需要的内容。