Haskell中的有效编程

时间:2018-03-06 05:52:30

标签: haskell monads applicative side-effects

Haskell中有效的编程意味着什么? 它基本上只是说使用applicative functor和简洁的函数?

1 个答案:

答案 0 :(得分:1)

正如其他人已在评论中所述,效果要么是有副作用的,要么是副作用本身。例如,写入文件,发送网络请求可以称为效果。在Haskell中,这是使用IO monad完成的(但是,这不是最好的介绍)。

然而,即使没有涉及IO,也有其他构造看起来像是在改变某些东西。这些是作为其他monad实现的。有state monadrandom monadwriter monad等等。这些也可以被认为是有效的。

对于这些单子的实际使用,人们经常使用某种形式的单子变换器。包mtlmonads-tf有助于编写这些monad。这对于使用例如状态monad和随机monad的特征进行计算是有用的。但是,您需要启用一些GHC语言扩展,但是当您习惯它时应该没有问题。还有extensible-effects,但我没有玩过它。

这是Haskell语言中相当大的一章,但它有助于编写更加可靠的代码。也许书中Learn you a Haskell for Great Good的第11章和第12章可能会帮助您解决一些问题。还有许多其他教程和博客文章(可能太多),涵盖了这些适合你的一个:)

我个人不会考虑使用普通的仿函数,因为它们只进行映射。