functional-programming - 函数式编程和方程求解器

标签 functional-programming language-design interpreter

就像个人实验一样,为了更好地学习编程和形式语言理论等,我正在尝试编写一种基本上接受一堆方程式并或多或少自动求解未知数的语言或启发式地。我试图通过用 C 语言编写一个解释器来做到这一点。

所有这些都不是 super 相关的,但......更重要的是,我在最近几天发现了函数式编程(我的意思是我阅读了维基百科的条目和一个简短的 Haskell 教程)并且它似乎处理与我想做的事情非常相似。

我想我想知道的是,是否有任何其他语言我应该研究,或者任何具有库或程序的非功能性语言试图做类似的事情,这样我可能会更好地理解什么我打算做什么?

此外,是否有关于编写解释器等的任何好的引用资料?

谢谢。

附言哦,我知道我可以而且应该使用谷歌。我,在旁边。最重要的是,我正在寻找关于什么是好的以及人们以前使用过的东西的集体“第二意见”。另外,我想更好地了解社区,因为我是新来的。感谢您的耐心等待:-)

最佳答案

免责声明:我没有认真探索这个领域,但希望这篇小文章可能对您有用 - 并等待看到其他人的更多答案。

我认为有多个问题合二为一:

1) 方程求解器。

如果您的意思是象征性地“求解未知数”- 这是您即将开始的一大堆工作,恕我直言 :-) 您即将着手创建一个 computer algebra system .

Term rewriting本身就是一个相当大的话题。如果您对这个级别的操作特别感兴趣,C 可能不是最容易使用的 - 您可能会更轻松地使用 Lisp 来完成该任务。

值得注意的是,并非每组方程都有解 - “仅仅”弄清楚它是否有解本身就是一项艰巨的任务。

另一方面,如果您希望以数字方式求解方程式,则类似于 this可能会很有趣。

2) 一般的函数式编程。

Haskell 是一门很棒的语言(尽管我仍然是它的初学者 - 我认为它可能是最优雅的语言之一)。 OCaml 可能是另一条探索路径。然后,当然还有 Scheme。如果您正在处理 Web 编程,那么具有直接实际意义的语言可能是 XSLT。

当然,您可以轻松地使用 Ruby 和 Python 编写函数式样式。观察学习新语言如何改变整体“主要”语言的编程模式是非常有趣的。因此,无论语言理论与否 - 接触的语言越多越好。

3) 编写解释器等

我怀疑考虑到这个问题的风格,你想做的最有趣的实际应用不是解释器,而是编译器中的优化代码。为此 - Dragon bookMIT computer language engineering course在我看来开始时会很有用。然后你可以捕获例如TCC 的副本和它一起玩。如果您想修补一些不那么传统的东西,请查看 potion - 一个非常有趣的语言实验,将 x86 机器代码作为其“字节码”(因此在 x86 机器上的性能非常惊人)。

This question on SO实际上引用了上面 (3) 中的大部分链接,还有很多。

关于functional-programming - 函数式编程和方程求解器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1257477/

相关文章:

python - 奇怪的 python 打印行为

tcl - 处理嵌入式Tcl运行时执行的退出命令

functional-programming - 用Kotlin流收集项目

javascript - 如何实现一个仿函数,使 map 可以应用于两个函数?

scala - 为什么以下 scala 实验代码不起作用?

c++ - 组合 std::function 对象

c++ - 使用非虚拟析构函数有什么具体原因吗?

design-patterns - 设计模式作为(缺失的)语言特性

Chrome V8 中的 Javascript && 运算符行为

oop - 为什么 Rust 不支持特征对象向上转换?