微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用从 DCG Prolog one 转换而来的普通子句?

如何解决如何使用从 DCG Prolog one 转换而来的普通子句?

我知道 DCG 只是一个语法糖,因为序言将它们翻译成正常的条款。 因此,例如,

palindrome --> [].
palindrome --> [_].
palindrome --> [X],palindrome,[X].
/*  it is translated into:  */
palindrome(A,A).
palindrome([_|A],A).
palindrome([X|A],B) :- palindrome(A,C),C=[X|B].

我的问题是,我想避免使用“短语”子句,并访问 DCG 转换的正常代码。 如果我尝试要求回文序列,它根本不起作用。 例如:

? palindrome([1,2],X).
X = [1,2] .

我希望得到与以下相同的结果:

?- phrase(palindrome,[1,2,1]).
true
?- phrase(palindrome,X]).
X = 1

不使用短语。 谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。