Scala中的副作用
发布时间:2020-12-16 09:13:33 所属栏目:安全 来源:网络整理
导读:在这几天我正在学习 Scala.我对Haskell很熟悉,虽然我不能说得很好. 对不熟悉Haskell的人的括号说明 我在哈斯克尔喜欢的一个特质是,不仅功能是一流的公民,而且是副作用(让我称之为行动).一个动作,当执行时,将赋予您一个类型a的值,属于特定类型IO a.您可以像其
在这几天我正在学习
Scala.我对Haskell很熟悉,虽然我不能说得很好.
对不熟悉Haskell的人的括号说明 我在哈斯克尔喜欢的一个特质是,不仅功能是一流的公民,而且是副作用(让我称之为行动).一个动作,当执行时,将赋予您一个类型a的值,属于特定类型IO a.您可以像其他任何价值一样传递这些操作,并以有趣的方式结合起来. 事实上,结合副作用是Haskell与他们做某事的唯一方法,因为您无法执行它们.相反,将执行的程序是由主函数返回的组合操作.这是一个整洁的技巧,允许功能是纯粹的,而让您的程序实际上做的事情而不是消耗电力. 这种方法的主要优点是编译器了解您执行副作用的代码部分,因此可以帮助您捕获错误. 实际问题 在Scala有一些方法让编译器类型检查副作用,所以 – 例如 – 你保证不会在某个功能内执行副作用? 解决方法
不,这在Scala原则上是不可能的,因为语言不强制引用透明度 – 语言语义忽视副作用.您的编译器将不会跟踪并强制您的副作用自由.
您将能够使用类型系统tag some actions作为IO类型,并且使用程序员纪律,获得一些编译器支持,但没有编译器证明. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |