C# 2.0 匿名再帰関数
まずは C# 2.0 ネタから.匿名関数で再帰も使いたいですよね,という話.
using System; using System.Collections.Generic; using System.Text; namespace RecursiveAnonymousMethod { class Program { static void Main(string[] args) { Converter<int, int> func = null; func = delegate(int i){ return i<=0 ? 1 : i * func(i - 1); }; Console.WriteLine( func(10) ); } } }
菊池さんが以下の記事で書かれているような内部実装を知っていればなんてことはない話です.
- 進化したC# 2.0の状態管理、匿名メソッドとイテレータ
- http://www.atmarkit.co.jp/fdotnet/special/cs20review02/cs20review02_01.html
Y Combinator 方面に話を持って行きたい人もいるかもしれません.
一方で,この手のシンタックスシュガー関係については C# コンパイラ自体をある種のコードジェネレータとして見るという考え方もあるかもしれません.副作用も効能の内,みたいな.