【问题标题】:What functional language approach most readily transfers to Boost Phoenix? [closed]哪种函数式语言方法最容易转移到 Boost Phoenix? [关闭]
【发布时间】:2026-01-15 13:25:02
【问题描述】:

我希望通过 am 学习函数式编程,以便将 Boost.phoenix 集成到我的项目中。

哪种语言最相似,因此我可以找到能够以可以在该上下文中轻松应用的方式说明函数式编程概念的书籍...haskell 和 ocaml 是否相似?

或者,有没有什么好的函数式编程书籍可以应用于 Boost.phoenix?

【问题讨论】:

    标签: haskell functional-programming ocaml boost-lambda boost-phoenix


    【解决方案1】:

    Phoenix 支持 C++ 中的函数式编程 (FP)。因此,最协同的语言将是 C++。

    如果您想按照自己的方式学习函数式编程,Haskell 和 Scheme 等语言可能是更好的选择。

    http://www.boost.org/doc/libs/1_51_0/libs/phoenix/doc/html/index.html

    【讨论】:

    • 我正在寻找使用 C++,但我正在寻找一本关于从功能角度解决问题的好书 - 该成语的模式 - 可以很容易地应用回 Phoenix,即使这本书适用于一种不同但在概念上兼容的语言。
    • 如果 Phoenix 是真正的函数式(我倾向于认为是),它所体现的原则是通用的,任何体面的函数式语言和书籍都足够了。 Phoenix 的重点是将函数式编程引入 C++;根据我的经验,将这样一个主要特性添加到已经成熟的语言上必然会产生一些复杂性,这会使你的学习过程变得复杂,除非你已经精通 C++ 编程。
    • 您正在寻找一本解释函数式编程的设计模式和习语以及相关软件架构的书。我不确定有没有这样的书。写一本这样的书是我目前的项目。 :)
    【解决方案2】:

    我对 Phoenix 没有任何经验(我浏览过文档),但我确实有一些使用 C++、OCaml 和 Haskell 的经验,因此我可以在那里提供帮助。

    首先,如果您学习函数式编程,您会发现它并不能很好地转换为 C++ - 它最终会比使用实际的函数式语言更混乱、更冗长。尽管如此,仍然值得学习这些技术,因为它们将为您提供更多工具和不同的思维方式。

    haskell 和 ocaml 相似吗?

    它们都受到 ML 的影响,所以它们非常相似(嗯,有点,见 cmets)。由于 OCaml 的命令式和 OO 特性,OCaml 更接近 C++,但我建议您学习 Haskell,因为它更实用、更令人费解并且拥有更多资源。类似于 ML 的语言的一个有趣之处,它们可以很好地转化为模板元编程。

    或者,有没有什么好的函数式编程书籍可以应用到 Boost.phoenix?

    Phoenix 的文档似乎使用了相当标准的术语。可能令人困惑的一件事是他们使用了“函子”这个词——在 C++ 中它表示函数对象,但在 Haskell 等语言中则是另外一回事。

    以下是您应该查找的一些术语:

    • lambda / 匿名函数
    • 一等功
    • 功能应用
    • 部分应用和柯里化
    • 作曲
    • 严格/非严格/惰性评估
    • 递归
    • 关闭

    这是我推荐阅读的两本免费书籍,因为它们是函数式编程的精彩介绍:

    http://learnyouahaskell.com/chapters(哈斯克尔)

    http://mitpress.mit.edu/sicp/full-text/book/book.html(方案)

    【讨论】:

    • Haskell 不是 SML 的派生词,它们出现的时间差不多,而且完全不同。
    • Haskell 的“血统”植根于 Turner 的惰性语言 SASL、KRC 和 Miranda 家族。粗略地说,ML(在 SML 之前)与 SASL 和 KRC 是同时代的,Miranda 与 SML 是同时代的。 Haskell 来得晚了一点。
    • @stephentetley 我更新了答案。
    【解决方案3】:

    我对 Phoenix 了解不多,但我认为 Okasaki 的纯函数式数据结构可以让您大致了解如何以函数式风格编写程序。

    【讨论】: