过去几个月我一直在寻找monad(函子和应用函子)。我一直试图弄清楚monad在一般意义上是否有用。如果我正在查看我要问的一段代码,我应该通过变换器使用特定的monad还是堆栈?在我的努力中,我认为我找到了答案,但我希望别人输入,以防我错过了什么。在我看来,monad可用于抽象掉特定的管道以增加一段代码的可读性/声明性,这可能会通过减少编写代码来提高生产率。我能找到的唯一例外是IO monad,它试图在面对IO时保持纯函数的纯粹性。似乎一个给定的monad没有为通过其他方法无法实现的问题提供解决方案。我错过了什么吗?
答案 0 :(得分:3)
除了Turing-completeness之外的任何功能是否都能解决通过其他方式无法实现的问题?不。所有图灵等效语言都是表达相同基本事物的不同方式。由于monad是由更基本的构建块构建的,显然这组构建块能够执行monad所能做的任何事情。当我们谈论一种语言或特征“允许”我们做某事时,我们的意思是它允许我们以一种易于理解的方式表达自然的东西。