Functional programming 函数编程与方程求解器

Functional programming 函数编程与方程求解器,functional-programming,language-design,interpreter,Functional Programming,Language Design,Interpreter,作为一个个人实验,为了更好地学习编程和形式语言理论等,我正在尝试编写一种语言,它基本上接受一组方程,或多或少自动或启发式地解决未知问题。我试图通过用C语言编写一个解释器来实现这一点 所有这些都不太相关,不过。。。更重要的是,我在过去几天里发现了函数式编程(我的意思是我读了维基百科的条目和一个简短的Haskell教程),它似乎处理了与我想做的非常相似的事情 我想我想知道的是,是否还有其他语言我应该研究,或者有库或程序的非函数式语言尝试做类似的事情,这样我就可以更好地理解我要做的事情 还有,有没有写

作为一个个人实验,为了更好地学习编程和形式语言理论等,我正在尝试编写一种语言,它基本上接受一组方程,或多或少自动或启发式地解决未知问题。我试图通过用C语言编写一个解释器来实现这一点

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

我想我想知道的是,是否还有其他语言我应该研究,或者有库或程序的非函数式语言尝试做类似的事情,这样我就可以更好地理解我要做的事情

还有,有没有写口译员的好参考资料

谢谢


另外,我知道我可以也应该使用谷歌。我是,站在一边。最重要的是,我正在寻找一个“第二意见”的集体,来说明什么是好的,人们以前用过什么。同时,我也在尝试更好地了解这个社区,因为我是新来的。感谢您的耐心:-)

免责声明:我没有认真研究这个领域,但希望这篇小文章对您有用,并等待其他人的更多答案

我认为一个问题中有多个问题:

1) 方程求解器

如果你的意思是象征性的“解决未知问题”——这是一大堆你即将开始的工作,伊姆霍:-)你即将开始创造一个新的世界

这本身就是一个相当大的话题。如果您对这一级别的操作特别感兴趣,那么C可能不是最容易使用的—您可能更容易使用Lisp来完成这项任务

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

另一方面,如果你想用数值方法来求解方程,像这样的事情可能会很有趣

2) 函数式编程

Haskell是一种很好的语言(尽管我还是一个非常初学者,我认为它可能是最优雅的语言之一)。OCaml可能是另一条探索之路。当然,还有一个计划。如果您正在处理web编程,那么具有直接实际意义的语言可能是XSLT

当然,您可以轻松地用Ruby和Python编写函数式。观察学习新语言如何改变“主”语言的编程模式是非常有趣的。所以,不管是不是语言理论,你接触的语言越多越好

3) 编写口译员等

我猜想,考虑到问题的味道,您想要做的最有趣的实际应用程序不是解释器,而是编译器中的优化代码。对于这一点,在我看来,这将是有益的开始。然后你可以抓起一份,然后玩它。如果您想修补一些不太传统的东西,请看一看-一个非常有趣的语言实验,它将x86机器代码作为“字节码”(因此x86机器上的性能非常出色)


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

正如安德鲁所说,你所描述的核心是“计算机代数系统”,更一般地说是“术语重写系统”。阅读这两个方面的内容应该会让你有方向感

是的,我希望你会发现函数式编程是一种非常适合的范例。也许逻辑编程也是如此

我的直觉是,你关于口译员的问题是越界的,结果是,这是

任何足够复杂的C或Fortran程序都包含一个特殊的、非正式指定的、充满bug的、缓慢的CommonLisp的一半实现

您可以将“CommonLisp”替换为“函数式编程语言”

换句话说,如果你选择并接受一种有意识地设计的函数式编程语言(适用于你的计算机代数系统),你就不必无意识地(糟糕地)创建一种函数式编程语言


我个人最喜欢的函数式语言是Haskell。对于新手来说,Haskell的优势在于让你承认——通过静态输入——当你仍在强制编程时。

Read。稍后将给出适当的答复。非常感谢你的长篇帖子,里面肯定有很多珍宝。(+1对你来说,复选标记可能会在以后的某个日期出现)很抱歉,我花了这么长时间才回到这个问题上。这是非常翔实的,非常感谢张贴。+1和感谢您的回答。关于口译员,正如我所设想的,整个练习的重点是我想写一种新的语言——不是一种能被任何半脑半脑的人使用的语言,而是一种能工作的语言,它有一个口译员程序,并且是基于方程式的(在我的理解中,它与函数式编程非常相似,尽管没有那么灵活).对不起,我不清楚。再次感谢你深思熟虑的回答。从下面转载…关于口译员,我设想的整个练习重点是,我特别想写一种新的语言——不是一种能被任何半脑半脑的人使用的语言,而是一种能工作的语言,它有一个口译员程序,并且是方程式based(据我所知,它与函数式编程非常相似,尽管没有那么灵活)。对不起,我不清楚。请知道,我非常感谢到目前为止的精彩回答。我只是写了一个更新,让人们知道我还活着,但我还没有时间全面了解人们发布的内容。对此表示抱歉,再次感谢您