scala - Scala中的纯FP?

标签 scala functional-programming scalaz

我的印象是有些人确实使用 Scalaz 编写纯应用程序,但基于此示例:[ stacking StateT in scalaz ],看起来任何真实的东西也不可能是毛茸茸的。

Scala 中是否有任何真实的、模块化的、松散耦合的、纯应用程序的指南或示例?我期待这意味着 scalaz.effect.SafeApp和 RWST over IO,但我想听听那些做过的人。

谢谢。

编辑:在没有答案的情况下,我已经开始收集资源作为下面的答案。如果您有任何示例或相关链接可以贡献,请做。

最佳答案

我认为你正在混合两种不同的东西。一是纯函数式编程,二是Scala类型系统。你可以用任何语言进行“纯”编程,即使是在 java 中。如果语言是功能性的,那么您将拥有纯函数式编程。

  • 它会让你的程序运行得更快吗?取决于程序 - 它可以更好地扩展,但对于单线程部件,您会降低性能。
  • 它“拯救你的认知”吗?这取决于你做的事情有多好。如果您每天都使用 FP、monad、箭头等,那么我认为它可能会有很大帮助。如果您向 OO 开发人员展示代码,他可能什么都不会理解。
  • 是否节省了开发时间?和以前一样,我认为可能,但老实说,这并不重要。你更经常阅读代码而不是编写代码
  • 你能在 PFP 中做有用的事情吗?是的,有些公司在 haskell 上赚钱

  • 现在,它可以在scala中完成吗?当然。有人会在scala中做吗?可能不是因为它太容易破坏纯度,因为类型系统太弱并且因为有更好的,“更纯粹”的工具(但目前不在 jvm 上)

    关于scala - Scala中的纯FP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23500959/

    相关文章:

    scala - 函数式编程性能

    scala - onComplete 和 foreach 在 Scala 中的 future 有什么区别?

    c++ - 接受一个参数并返回它的函数

    clojure 映射,%2 和 %1 是什么

    scala - 如何返回 EitherT 内的元组

    scala - 在深度复制到 Map 值时避免重复使用镜头

    java - Scala 工具的当前状态是什么?

    scala - 我如何从 finagle 客户端发出带有参数的请求?

    scala - Slick 3.0.0 - 仅使用非空值更新行

    scala - 使用 scalaz 的开源项目示例