ベンチャーキャピタルの Y コンビネーターはラムダ計算の Y コンビネーターから名付けられている。その Y コンビネーターについて JavaScript での説明をメモっとく。 階乗の再帰的な関数定義 JavaScript で階乗を再帰的に定義して、5の階乗を求めるとこうなる。 function factorial(n) { return n == 0 ? 1 : n * factorial(n - 1); } factorial(5); // => 120 この場合 factorial という名前で関数を定義しているので再帰的に関数呼び出しができている。しかし Y コンビネーターを使うと無名関数での再帰的な関数呼び出しが実現できてしまう。まあ、JavaScript だと arguments.callee で下記のように実現できてしまうのだけど、arguments.callee を使わなく
![JavaScript で Y コンビネーターを理解する - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/086cf03ca81caf9e32824ac134cf7e26a375ea0d/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9SmF2YVNjcmlwdCUyMCVFMyU4MSVBNyUyMFklMjAlRTMlODIlQjMlRTMlODMlQjMlRTMlODMlOTMlRTMlODMlOEQlRTMlODMlQkMlRTMlODIlQkYlRTMlODMlQkMlRTMlODIlOTIlRTclOTAlODYlRTglQTclQTMlRTMlODElOTklRTMlODIlOEImdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZzPWI3YWIyNjczODFhOTc1ODYxYWQ3MTNlMDA2MmE2NjM2%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDB0YWt1eWEwMzAxJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0yNDRiYjRkZWI3OWQwZjRlNjQ2MGUyM2E3NmNhNDk1OQ%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3D2a3426e13ae8c3b219800ed8cdc3ad4d)