符号计算和函数式编程是否相关?

时间:2011-04-05 12:54:42

标签: functional-programming symbolic-math computer-algebra-systems

我想知道symbolic computation中的Computer Algebra System(例如Matlab中的符号工具箱,Mathematica)和functional programming是否相关以及如何?前者属于后者吗?

谢谢和问候!

2 个答案:

答案 0 :(得分:4)

他们是不同的野兽。然而,一个重叠点是术语重写语言,如纯(http://code.google.com/p/pure-lang/)。 Pure可以用作纯函数式编程语言。但是,由于它是通过术语重写而不是图形缩减来实现的,因此它的表达式总是能够被模式匹配到它们的位中并进行转换。这种符号操作是计算机代数系统的关键特征之一。也就是说,计算机代数系统的大量功能来自于大量的数学计算,尤其是具有强大的算法以解决各种棘手的问题。您可以编写库来在函数式语言中执行此操作(代数数据类型会使其比命令式数据类型更令人愉快),但您仍需要编写这些库。

答案 1 :(得分:1)

这两个概念不一定相关。然而,您可能会发现有趣的事实是John McCarthy在1958年设计的Lisp编程语言受到lambda演算的影响。同年,McCarthy发表了An Algebraic Language for the Manipulation of Symbolic Expressions,其中提出了一个非常简单的象征性差异化计划(见附录I)。因此,你可以看到这两个概念在开始时非常接近。