namespace ChurBool
{
//church bool To normal bool
auto ToNormalBool = [](auto&&f)
{
return f(true, false);
};
auto True = [](auto&&m, auto&&)
{
return m;
};
auto False = [](auto&&, auto&&n)
{
return n;
};
auto And = [](auto&&m, auto&&n)
{
return m(n,m);
};
auto Or = [](auto&&m, auto&&n)
{
return m(m,n);
};
auto Not = [](auto&&m)
{
return [=](auto&&a, auto&&b)
{
return m(b,a);
};
};
auto Xor = [=](auto&&m, auto&&n)
{
return m(Not(n),n);
};
auto If = [](auto&&predicate)
{
return [=](auto&&t, auto&&f)
{
return predicate(t, f);
};
};
}
namespace ChurNum
{
//church number To normal number
auto ToNormalNum = [](auto&&f)
{
return f([](int a)
{
return a+1;
})(0);
};
//0
auto zero=[
church_encoding C++版实现
最新推荐文章于 2023-09-20 09:16:16 发布