F#高级练习

时间:2013-02-06 20:18:01

标签: f# functional-programming

我已经读完了关于F#的书籍,我已经完成了书中的大部分练习,这些练习都很基础。现在我正在寻找更高级的练习来提高我的语言和函数式编程概念。

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

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

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

4 个答案:

答案 0 :(得分:24)

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

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

答案 1 :(得分:14)

我开始经历前50个Project Euler问题。这是一个很好的初始学习经历。

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

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

答案 2 :(得分:7)

tryfsharp.org是学习F#的绝佳网站。教程按技能级别和问题域进行细分。它可能就是您正在寻找的东西。

答案 3 :(得分:3)

HackerRank为您提供算法挑战。整个部分专门讨论functional programming,当您创建解决方案时,您可以选择F#作为您选择的语言。

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