【发布时间】:2014-02-10 14:23:41
【问题描述】:
我是 Prolog 的新手。我正在努力学习这一点。我正在构建一个后缀来前缀转换谓词。我搜索了很多 google 和 github 等。prolog 递归语法非常混乱。通过大量搜索,我只是found this one link on stackoverflow。我正在解决同样的问题,但指定的解决方案非常令人困惑。我没有想到 append/2 函数的实现,还有一元运算符呢?现在已经超过 3 天了,我一直在努力解决这个问题,只是被搞砸了。任何人请帮助我实现这个逻辑或任何书籍参考或一些链接,以更好地理解同一问题。谢谢
我想这样解决
post2pre([A,B,C|Rem],Pre) :- Pre=[C,A,B], isop(C).
但问题是如何处理雷姆?如果我在列表中只有一两个项目怎么办 我想像这样解决它
post2pre([A|[]],Pre) :- Pre=[A].
post2pre([A,B|[]) :- Pre=[A,B].
对于 isOp(),我将它们定义为
isop(+). isop(-). isop(*). isop(/). isop(sin). isop(cos). isop(exp).
但我不知道如何处理一元运算符?
【问题讨论】:
-
我已经运行了我发布的链接中指定的代码。但问题是我的大脑仍然无法以 prolog 的方式思考。
标签: data-structures prolog stack logic