Clojure与F#中的符号数学计算

Ham*_*jan 4 f# clojure symbolic-math

我遇到了下面的F#样本,发现它很有趣.

http://www.codeproject.com/KB/net-languages/SymbolicCalcInFS.aspx

Clojure是否有语言/图书馆设施可以轻松完成这样的事情?如果使事情变得更容易,可以强制使用波兰表示法来表示公式.

谢谢,如果有问题请告诉我.

Tom*_*cek 6

我对Clojure知之甚少,但至少有一些指针.

关键的功能,使F#代码好的是模式匹配代数数据类型.代数数据类型例如是类型的声明Expression(用于表示数学表达式),并且模式匹配match是用于在实现简化或区分时检查各种已知情况的构造.

我不认为Clojure有任何内置的模式匹配支持,但它可以作为库实现.一个看起来很有趣的库是模式匹配模块(在Clojars中).这是一个使用它来实现代数评估器的例子(它非常接近F#文章).

F#文章中出现的另一件事是活动模式(允许您声明和重用模式).我不认为有一个Clojure库,但考虑到语言的灵活性,也应该可以实现它们(但是,它们在F#文章中并不是真正必要的)


Yin*_*Zhu 6

Lisp在符号计算方面有着悠久的历史.请参阅Peter Norvig 撰写的AI案例研究书.Lisp提供了许多很棒的语言功能来抽象符号上的常见操作.有时您可以编写非常简洁的代码(比F#更简洁/更简洁).

像F#这样的静态语言在数据类型上具有强类型系统和方便的模式匹配.编译器可以找到类型系统捕获的错误,例如缺少考虑一个特殊情况.考虑使用数据的类型也可以减少运行时错误的可能性.F#中的类型推断也使F#代码非常简洁.


Art*_*ein 2

我没试过,但Clojuratica看起来很有趣。