26

我已经阅读了有关 F# 的书籍,并且完成了书中大部分的基本练习。现在我正在寻找更高级的练习来提高我在语言和函数式编程概念方面的技能。

有没有地方或书可以让我通过专门设计的练习来练习 F# 以学习语言功能?现在我只能找到介绍性的东西或一般的编程问题网站(例如 Project Euler)。

我的目标真的是学习如何以函数式的方式思考,并习惯于模式匹配、部分应用函数、monads/工作流、尾递归等。我想学习如何使用功能构造来解决问题。

我也对为其他函数式编程语言(如 Haskell)设计的任何好的练习感兴趣。

4

4 回答 4

27

如果您相信通过实践经验学习,那么Project Euler 问题可能是您的练习。它们不仅限于函数式编程,而且它们的数学性质非常适合 F# 和其他函数式语言。Yet Another Project Euler Series是在 F# 中开始使用 Project Euler 的一个很好的资源。

我曾经通过99 个问题学习 Prolog,但我看到人们也通过它们学习 Lisp、Haskell、OCaml 等。我认为这些练习是学习 F# 的有用资源。它们是精心设计的问题。前几个教您使用列表(F# 中的基本数据结构)。关于逻辑、树和图的更高级问题是探索高级 F# 功能的好机会。以下是OCamlF#中的解决方案集,以供您参考。

于 2013-02-06T20:32:03.473 回答
15

我从前 50 个Project Euler问题开始。那是一次很棒的初步学习经历。

在我开始积极参与 Stackoverflow F# 标签之后不久。看到其他人提供的答案,并且不得不研究我自己的答案是非常有教育意义的(你知道他们所说的通过教学来学习,这是真的)。

然后,我最大的学习经历来自于 F# 中的开源项目。即FsEyeUnquote。这两个想法都来自对我使用 F# 的经验的反思,并看到了丰富 F# 生态系统的机会。就 FsEye 而言,它正在增强 FSI 的体验。在 Unquote 的情况下,它利用了独特的 F# 功能。这两次在严肃项目中边做边学的经验真正让我对 F# 有了深刻的理解和技能。

于 2013-02-06T21:03:44.557 回答
7

tryfsharp.org是一个学习 F# 的好网站。教程按技能水平和问题领域分类。它可能正是您正在寻找的。

于 2013-02-06T20:21:40.463 回答
4

HackerRank为您提供算法挑战。有一整节专门介绍函数式编程,当您创建解决方案时,您可以选择 F# 作为您选择的语言。

在函数式编程中,您可以在不同的任务组中进行选择:递归、函数式构造器、解析器等等。

于 2015-03-30T00:59:47.940 回答