我正在构建一种基于 Web 的编程语言,部分灵感来自 Prolog 和 Haskell(别笑)。
它已经有了相当多的功能,您可以在http://www.lastcalc.com/查看原型。您可以在此处查看源代码并在此处阅读有关架构的信息。请记住,这是一个原型。
目前 LastCalc 无法简化表达式或求解方程。我不想在 Java 中硬编码,而是想增强基本语言,使其可以扩展为只使用语言本身(如 Prolog)来完成这些事情。与 Prolog 不同,LastCalc 有更强大的搜索算法,Prolog 是“带有回溯的深度优先搜索”,LastCalc 目前使用的是启发式最佳优先搜索。
在深入研究之前,我想更多地了解其他系统如何解决这个问题,尤其是 Mathematica / Wolfram Alpha。
我假设这个想法,至少在一般情况下,是你给系统一堆规则来操作方程(比如a*(b+c) = a*b + a+c
)指定目标(例如隔离变量 x)然后放开它。
所以,我的问题是:
- 我的假设正确吗?
- 应用规则的搜索策略是什么?例如。深度优先,广度优先,深度优先,迭代加深,某种最好的优先?
- 如果它是“最好的优先”,那么使用什么启发式方法来确定特定规则应用是否有可能使我们更接近我们的目标?
我也很感激任何其他建议(“放弃”除外——我经常忽略那条建议,这样做对我很有帮助;)。