4
我在Visual Studio中擺弄周圍,我發現是否有用於委託類型返回與它自己相同類型的委託?
delegate RecursiveDelegate RecursiveDelegate();
是一個有效的委託定義。
我沒有很多函數式編程經驗,但我想知道這個模式在函數式編程中是否真正有用,或者它只是對語義的好奇。我想以兩種方式提出這個問題:
- 在有副作用的情況下。我可以看到這實際上是一種中等程度的方式來模擬功能性語言中的迭代學習算法,其中算法的實際任務是作爲副作用執行的,新版本的函數是返回值。這是否完成?
- 在沒有副作用的情況下。我認爲這在原則上是無用的,但如果我錯了,我會非常好奇。如果我們假設RecursiveDelegate()的實現沒有副作用,這可能會有用嗎?
在CLR中,委託是具有'Invoke'方法(帶有一些額外的元數據,但是它的核心)的對象。如果你這麼想的話,它的工作原理並不奇怪。它並不比在方法中返回自身的對象更爲怪異。 – zneak
@zneak - 我不認爲這個問題是關於它爲什麼起作用的(有些合理,因爲函數可以返回它想要的任何類型),而是如何/如果它對於函數式編程有用。 –
當然。這就是爲什麼我沒有發佈答案。我正在解決表達的最初驚喜。 – zneak