|
|
1
6
Lisp在符号计算方面有着悠久的历史。见 the AI case study book 彼得·诺维格。Lisp提供了许多很好的语言特性来抽象符号上的常见操作。有时,您可以编写真正简洁的代码(比f更简洁/简短)。 像F这样的静态语言具有强大的类型系统和方便的数据类型模式匹配。编译器可能会发现类型系统捕获的错误,例如缺少考虑一个特殊情况。使用数据考虑类型也可以减少运行时错误的可能性。F中的类型推断也使F代码非常简洁。 |
|
|
2
6
我对clojure不太了解,但至少这里有一些建议。
使F代码更漂亮的关键特性是
模式匹配
在
代数数据类型
. 代数数据类型是
我不认为Clojure有任何内置的模式匹配支持,但是它可以作为一个库来实现。一个看起来很有趣的图书馆是 patter-match module (在克洛贾尔语中)。下面是一个使用它的示例 to implement algebraic evaluator (非常接近F条款)。 文章中出现的另一件事是 活动模式 (允许您声明和重用模式)。我不认为有一个clojure库可以实现这一点,但是考虑到语言的灵活性,应该也可以实现它们(但是,在f文章中,它们并不是真正必要的)。 |
|
|
3
4
符号分化是Lisp的第一个应用之一! 我写了一篇关于一个简单的符号微分器的博客。它只处理+和*,但很容易扩展。 这是我写的一个系列文章的一部分,我在伦敦的一个会议上向初学者介绍Clojure,以说明Clojure操纵自己的代码是多么容易。 当然,有趣的是,做了区分之后,代码就可以编译了!因此,您可以生成用户输入的不同版本,或者生成函数及其派生的宏等。 原版在这里,并且很好地突出显示了语法: http://www.learningclojure.com/2010/02/clojure-dojo-4-symbolic-differentiation.html 但我已经把代码贴在这里了,所以你可以看看:
|
|
|
4
2
我没试过,但是 Clojuratica 看起来很有趣。 |
|
|
5
1
现在Clojure提供了强大的模式匹配库: |
|
|
6
0
是的,像你描述的那样的系统现在存在于Clojure上!这正是格里·苏斯曼在《经典力学的结构与解释》一书中的伴奏体系。对于Clojure,它被命名为 锡克分子 由科林·史密斯移植。 我在别处简单地描述过- https://stackoverflow.com/a/41646455/4070712 -但简而言之,是的,它确实做到了你文章提到的四件事,即。
还有更多… 1)微分(支持全偏微分)
铌。支持两种类型的向量,“向上”和“向下”以适应协变和逆变表达式。 2)表达式的简化:哦,是的……
3)格式:表达式可以用tex呈现,以实现美观的显示。 我不能在这里轻松展示这个,但目前正在开发一个枫木风格的笔记本/工作包,使用Clojure的“Gorilla”。 4)解析:显然。表达式和函数之间的转换是系统的核心部分。 看看 https://github.com/littleredcomputer/sicmutils . 您甚至不需要CuljEube来运行它,您可以使用所提供的JavaJAR文件。 |
|
|
pred · 如何将向量指定给符号表达式或函数句柄? 8 年前 |
|
|
Shin · Matlab中符号方程等式的检验 8 年前 |
|
|
PatStarks · 如何以符号形式从Matlab函数返回答案 8 年前 |
|
|
Frank-Rene Schäfer · 辛-元素符号数上的符号和 8 年前 |
|
|
Nick · MATLAB solve()无法求解特定值的三角矩阵 8 年前 |
|
|
Daniel · Symphy:如何计算带有常数的表达式? 8 年前 |
|
|
cylee · 矩阵运算的Matlab符号函数无点转换 9 年前 |