我一直在阅读有关继续传递样式编程技术(C#3.0实现)的内容.
为何/何时使用此技术会有用?
如何实现这一点以获得那些真正的长链?这与currying相同(这会在google中产生更好的搜索结果)吗?
谢谢
要回答你的最后一个问题,继续传递风格是不一样的.当你从另一个函数创建一个函数时,你可以通过指定一个或多个参数来进行curry,从而获得一个参数更少的函数.在函数式编程语言(如F#和C#)中进行一定程度的使用,可以将所有函数视为一个变量的函数.如果所述函数具有多个参数,则可以将其视为具有on参数并返回具有其余参数的另一函数.这是c#中currying的一个例子:
public static class FuncExtensions
{
public static Func<A, Func<R>> Curry<A, R>(this Func<A, R> f)
{
return a => () => f(a);
}
}
Func<int, int> f = x => x + 1;
Func<int> curried = f.Curry()(1);
Run Code Online (Sandbox Code Playgroud)
咖喱功能将永远返回2.当然,这有更多的启发性用途.
关于延续传递样式,除了链接到Wes Dyer博客之外,还要查看F#异步工作流,它们是continuation的实例,或者是continuation monad.您可以尝试使用术语continuation monad来查找其他一些文章.
| 归档时间: |
|
| 查看次数: |
6489 次 |
| 最近记录: |