Y Combinatorとは何かという人は, この記事がわかりやすいです. Y コンビネータって何? - IT戦記 JSでは関数の型とかがいらないので, とてもシンプルにY Combinatorが書けます. var Y = function(f){ return (function(g){ return function(m){ return f(g(g))(m); } })(function(g){ return function(m){ return f(g(g))(m); } }); } しかし, Goでは関数の返り値, 引数の型を指定しなければいけません. すると, 上の例に当たるgの引数が再帰的に展開されてしまい, 純粋な関数では書くことが出来ません. そこで, いったん他のを探すと, の手法ならすぐにいけました. package main import "fmt"; type
![GoでY Combinatorとか不動点関数とかmemoizeとかできたよー - 枕を欹てて聴く](https://cdn-ak-scissors.b.st-hatena.com/image/square/06a15c64ba0ceec233d86d71001ebb29a9dcbf5d/height=288;version=1;width=512/https%3A%2F%2Fcdn.blog.st-hatena.com%2Fimages%2Ftheme%2Fog-image-1500.png)