9 monads functional-programming fluent-interface
请原谅我,如果这个问题看起来很愚蠢,但我对整个函数式编程世界都很陌生,所以我需要在StackOverflow上使用一些居民来让我直截了当.
从我收集的内容来看,对monad的操作会返回monad.这是否意味着monad具有流畅的接口,其中应用于monad的每个函数在将一些操作应用于它包装的变量之后返回该monad?
大概你指的是与monad相关联的绑定运算符,其中一个可以以monadic值开头,将它绑定到monadic函数,然后用另一个monadic值结束.这很像一个"流畅的方法"(或一组这样构成一个"流畅的界面"),它返回一个"this"指针或引用,是的,但你在那里错过的是monadic函数需要不返回一元值是相同类型的输入值.流畅的方法约定是返回相同类型的值,以便继续链接对正在准备的实例(或实例)都有效的调用.
monadic 绑定运算符签名看起来更像是这样的:
M[a] -> (a -> M[b]) -> M[b]
Run Code Online (Sandbox Code Playgroud)
也就是说,"返回值" 可能是与第一输入值的类型不同的类型.当提供的函数具有类型时,它只是相同的
(a -> M[a])
Run Code Online (Sandbox Code Playgroud)
这一切都取决于monadic函数的类型 - 更具体地说,取决于monadic函数的返回类型.
如果要约束monadic函数的域,你接受那些返回与提供给bind运算符的monadic值相同类型的函数,那么是的,你会有一些行为类似于流畅的接口.
| 归档时间: |
|
| 查看次数: |
1131 次 |
| 最近记录: |