2013-06-03 52 views
4

我想知道是否有任何允許在子句中使用左遞歸的Prolog實現。我的直覺是,如果實現使用廣度優先目標搜索,它可能支持左遞歸。但我不太確定。請注意,我並不在乎效率。任何允許左遞歸的Prolog實現?

+2

或迭代深化。好吧,你說你不關心效率...... :) –

+0

謝謝你的建議,威爾。迭代加深實際上效果更好。我用一個小例子嘗試了Ciao的BF擴展,得到了stackoverflow(無雙關)。 – day

回答

5

您的直覺是正確的,但Prolog使用深度優先搜索設計(請參閱SLDNF分辨率here),並有充分的理由,那麼該限制是不容易避免的。

OTOH,Ciao Prolog提供合適的extension

您可以使用元解釋器模擬廣度優先遞歸,例如對於左遞歸DCG(左遞歸語法是一個常見情況)here,但它通常不是一個簡單的方法。

IMO可以近似/滿足您的請求的最常見擴展是列表,您可以在YAP Prolog,XSB,B-Prolog中找到它。

+1

鏈接到一些材料的表格將真的有幫助。 :) –

+0

非常感謝,CapelliC。 – day