>>437
普通にやるなら既に解決しているけれど、面白そうだから先に変数を宣言しないようにやってみた。

sub Y {
my $f = shift;
my $m = sub {
my $proc = shift;
$f->(sub { $proc->($proc)->(@_) });
};
$m->($m);
}
my $var = Y sub { my $f = shift; sub { $f->() } };
$fact->();

Y Combinatorってやつ。