我对使用定点组合器的实际示例感兴趣(例如 C++ 中的y 组合器。您是否曾经在真实的实时代码中使用带有egg或绑定的定点组合器?
我发现鸡蛋中的这个例子有点密集:
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);
}
你能解释一下这一切是如何运作的吗?
是否有一个很好的简单示例,可能使用绑定可能比这个更少的依赖项?