【发布时间】:2010-09-14 04:53:56
【问题描述】:
我对使用定点组合器的实际示例感兴趣(例如 C++ 中的y-combinator。您是否曾经在实际代码中使用过带有egg 或bind 的定点组合器?
我在 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);
}
你能解释一下这一切是如何运作的吗?
有没有一个很好的简单示例,可能使用依赖项可能比这个更少的绑定?
【问题讨论】:
-
如果您编写的代码看起来没有人能够维护它,包括您自己。
-
我的意思不是我真的想在 C++ 中编写定点组合器或 lambda,而是对于像我这样不太熟悉的人来说,C++ 中的一个例子会有所启发它们可能更有用的语言。
标签: c++ bind y-combinator