Phoenix 可以看作是对 Boost Lambda Library 的重新实现。它是作为 Boost.Spirit 的一部分的,但是我们完全可以把它作为单独的库来使用,以达到一些非常酷和方便的效果。
基本上,Phoenix 大大方便了在 C++ 中进行 functional programming。当然,由于 C++ 不是函数式语言,我们没有可能进行严格的 functional programming,库的作用也只是让这种风格得到更方便的实现。在 STL 里,我们已经在进行一些 FP,例如对 functor 的利用使得算法的重用性大大提高,而 Phoenix 则让编写 functor 更加自然和简便。
val
在下面的代码中,val(3) 和 val("Hello Phoenix") 都是 functor,它们的作用就是返回它们的参数。而且,它们是 lazily evaluated 的。
输出:
3