加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在Scala中坚持功能范式的功效

发布时间:2020-12-16 09:29:44 所属栏目:安全 来源:网络整理
导读:我最近买了编程Scala,并一直在阅读。语言绝对不是我的预期!具体来说,在Lisp宏和Haskell的类型级别副作用隔离之外,似乎实现了我所知道的每个编程语言思想。 坦白说,我有点不知所措。虽然我觉得拥有这么多工具是非常好的,但我真的只是在JVM上寻找强类型
我最近买了编程Scala,并一直在阅读。语言绝对不是我的预期!具体来说,在Lisp宏和Haskell的类型级别副作用隔离之外,似乎实现了我所知道的每个编程语言思想。

坦白说,我有点不知所措。虽然我觉得拥有这么多工具是非常好的,但我真的只是在JVM上寻找强类型的功能语言。我想我可能以这种方式使用Scala,但是我想像如果我与任何图书馆进行交互或者通过别人的代码,我将会遇到很多这样的高级(对我来说)OOP的东西 – 特征和“对象层次结构线性化“,所有这些抽象和压倒一切的业务,单身,包和伴侣对象,隐式转换…更不用说各种语法快捷键和糖。

人们经常抱着一些尝试将一种语言风格融入另一种语言的程序员,有很多好的理由。但并不是所有的语言都像Scala一样是多范式的,所以也许它的社区有不同的看法?例如,在F#中,编程风格似乎有一些余地,你使用的OOP有多少。但只是从阅读我不知道这是否是一个很好的哲学Scala。

更有经验的Scala程序员可以帮助我吗?编辑清楚:基本上,我可以安全地使用Scala的FP功能(或大部分),而不必担心其先进的OOP端?

对不起,这个漫漫的问题!

解决方法

我认为这个问题肯定是一个坚实的一点。通过查看任何图书馆可能如何处理例外来照亮它。

如果您与Java库交互,任何方法都可能会引发异常。这可能是通过一个检查的异常显式的,或透明的(从API的角度),通过运行时异常。你应该做什么,作为一个程序员谁可能试图使用更有效的任一种类型来表示失败(或scalaz的验证)?

对我来说,这不会在scala(即接近问题和选择纯粹的功能性方法)中发挥是不清楚的。当然可能会产生许多不同风格的编码。也就是说,您可以从Scala的功能方面获得丰富而有用的东西,而且您的程序中的功能和命令行代码的组合肯定有可能相互并行。虽然功能性纯粹主义者当然可能不同意这是否是最佳状况。

对于什么是值得的,我发现在我的程序中应用功能范例已经改进了我的代码没有结束。因为我没有尝试过Haskell或F#,我无法告诉你,净结果是好是坏。

但它用Java擦拭地板;并且从我的角度来看,在JVM上(具有与我们所有的Java库共存的实际优点)是一个杀手级的应用程序。

在边缘,当您开始更多地使用scala的功能方面时,您将遇到一些问题。这些是最明显的:

缺乏隐含的功能currying(即等价于A => B => C和(A,B)=> C)
缺乏隐含函数tupling(即n-ary函数和以n元组为参数的1元函数之间的等价)
对于部分应用型构造函数(即M [A]与例如[Int,A])的等价性的缺乏推断,

这两个问题使得应该是漂亮和清晰的功能代码,丑陋和模糊。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读