Gab*_*iMe 2 functional-programming clojure
我认为整个想法是只有NO状态的计算和没有副作用.现在,如果Clojure应用程序(或更糟糕的是,可重复使用的Clojure 库)可以使用和创建任何Java对象,我怎么能确定我没有副作用或状态?
FP是一种范式,一种概念,但不一定是教条.Clojure信任程序员就他将离开FP的位置做出深思熟虑的决定.作为交换,Clojure提供了以Java库形式提供的惊人的代码聚宝盆.这使得在Clojure中编写GUI应用程序,或者Web服务器或Java库代码所涵盖的任何内容变得相对容易和轻松.
请注意,Java"洞"并不是Clojure从FP提供的唯一逃生舱:引用和原子保持状态,Clojure提供在受控条件下更改它的功能.我认为这种实用的方法使Clojure变得有用,并且有助于使它受欢迎.
除了咨询文档或使用java反编译器(?)之外,您无法确定.这种能力无疑违背了纯函数式编程的想法,但现实世界并不是一个特别纯粹的地方,纯粹的功能性语言也无法对它产生太大的影响.在Haskell中看到所有与monad的扭曲.此外,可变状态在计算上非常强大 - 当使用可变状态实现时,许多算法变得更快且更经济.