1

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

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

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

4

3 回答 3

4

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

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

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

于 2012-10-18T23:51:36.767 回答
2

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

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

haskell 和 ocaml 相似吗?

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

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

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

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

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

这里有两本我推荐阅读的免费书籍,因为它们是函数式编程的一个很好的介绍:

http://learnyouahaskell.com/chapters (Haskell)

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

于 2012-10-19T02:20:30.303 回答
2

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

于 2012-10-19T08:33:34.610 回答