如果这个问题看起来很愚蠢,请原谅我,但我对函数式编程的整个世界都很陌生,所以我需要一些 StackOverflow 上的居民来让我直截了当。
据我所知,对 monad 的操作会返回一个 monad。这是否意味着 monad 有一个流利的接口(interface),因此应用于 monad 的每个函数在对它包装的变量应用一些操作后返回该 monad?
最佳答案
大概您指的是与 monads 关联的绑定(bind)运算符,其中可以从一个 monadic 值开始,将其绑定(bind)到一个 monadic 函数,并以另一个 monadic 值结束。这很像一个返回“this”指针或引用的“流利方法”(或一组这样的“流利接口(interface)”),是的,但是你会错过的是单子(monad)函数不需要返回与输入值相同类型的一元值。流畅的方法约定是返回相同类型的值,以便继续链接在正在准备的实例(或多个实例)上都有效的调用。
一元绑定(bind)运算符签名看起来更像这样:
M[a] -> (a -> M[b]) -> M[b]
也就是说,“返回值”的类型可能与第一输入值的类型不同。仅当提供的函数具有类型时才相同
(a -> M[a])
这一切都取决于一元函数的类型——更具体地说,是一元函数的返回类型。
如果您要将您接受的单子(monad)函数的域限制为那些返回与提供给绑定(bind)运算符的单子(monad)值相同类型的函数,那么是的,您将拥有类似于流利接口(interface)的东西。
关于functional-programming - monad 有流畅的接口(interface)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5438338/