问题描述
我知道 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 (将#修改为@)