固定小数点コンビネータ ( C++のyコンビネータなど) を使用する実際の例に興味があります。実際のライブ コードで卵またはバインドで固定小数点コンビネータを使用したことがありますか?
この例は卵で少し濃いことがわかりました:
void egg_example()
{
using bll::_1;
using bll::_2;
int r =
fix2(
bll::ret<int>(
// \(f,a) -> a == 0 ? 1 : a * f(a-1)
bll::if_then_else_return( _2 == 0,
1,
_2 * lazy(_1)(_2 - 1)
)
)
) (5);
BOOST_CHECK(r == 5*4*3*2*1);
}
これがどのように機能するか説明できますか?
おそらくこれよりも依存関係が少ない bind を使用した簡単な例はありますか?