【发布时间】:2013-08-19 12:50:53
【问题描述】:
我在 Visual Studio 中摆弄,我发现
delegate RecursiveDelegate RecursiveDelegate();
是一个有效的委托定义。
我没有大量的函数式编程经验,但我想知道这种模式在函数式编程中是否真的有用,或者它只是对语义的好奇。我想从两个方面问这个问题:
- 在有副作用的情况下。我可以看到这实际上是用函数式语言对迭代学习算法进行建模的一种不错的方式,其中算法的实际任务是作为副作用执行的,而新版本的函数是返回值。完成了吗?
- 在没有副作用的情况下。我认为这原则上没用,但如果我错了,我会非常好奇。如果我们假设 RecursiveDelegate() 的实现没有副作用,这会有用吗?
【问题讨论】:
-
在 CLR 中,委托是具有
Invoke方法的对象(带有一些额外的元数据,但这是它的核心)。如果你这样想,它的工作原理就没有什么奇怪的了。没有什么比在方法中返回自身的对象更奇怪了。 -
@zneak - 我认为问题不在于它为什么起作用(有点合理,因为函数可以返回它想要的任何类型),而是它如何/是否对函数式编程有用.
-
当然。这就是为什么我没有发布答案。我正在解决最初表达的惊讶。
标签: c# delegates functional-programming