学习function/ Clojure编程 – 实践练习?
我正在用Clojure学习函数式编程。 你可以推荐什么样的实践练习? 在线存储库的解决scheme将是完美的。
我能想到的一个想法是通过sorting,树,图等所有stream行的algorithm,并在Clojure自己实现它们。 虽然它可以工作,但它可能非常陡峭,我可能做得不够高效(与知道自己在做什么的人相比)。
我会build议做欧拉项目练习:
欧拉项目是一系列具有挑战性的math/计算机编程问题,这些问题不仅仅需要math见解来解决。 虽然math会帮助你达到优雅和有效的方法,但是要使用计算机和编程技巧来解决大多数问题。
由于许多程序员正在解决Project Euler练习,因此您可以将解决scheme与其他(非function性)编程语言进行比较,但也可以使用Clojure解决scheme: http : //clojure-euler.wikispaces.com/ ,因此您可以对比强制性vsfunction/惯用的Clojure。
当然,如果不咨询任何解决scheme,您将首先自己动手练习,从而学到最多。
4clojure最近推出。 function性的Koans以及99个Lisp问题中的几个难题吸引了很多灵感; 但它提供了一个只需要你的浏览器的学习经验,提高了两者。
语言教程中的问题各不相同,比如这个列表的第二个元素是什么? 发人深省的问题是否可以安排这N个单词,使每个单词与前一个单词最多相差一个字符 ,每天都会增加更多的问题。
试试99个Lisp问题 。 解决scheme不在clojure,但应该很容易翻译。
我最近开始自己学习Clojure,发现labrepl很有用。
它可以让你熟悉基础知识和REPL,包含许多练习,并且描述了很多非常明显的东西,在文档中很难find,因为你还不知道你在找什么。
推荐的。
编辑
此外, Python挑战赛是一系列可通过几行编程解决的难题。 谜题的解决scheme将为您提供访问下一个谜题的url。
虽然不是特别的Clojure,但是拼图相当具有娱乐性,是一种很好的方式,让你的双脚与任何新的语言恕我直言。 (有几个特定于Python的谜题,但是大多数谜题是不可以的。
Python挑战与欧拉任务不同之处在于更实用,更lessmath导向; 任务包括像过滤图像的字节和以编程方式跟踪超链接。
Clojure有一些function性的Koans: https : //github.com/functional-koans/clojure-koans
我没有得到这些尝试,但听到很好的评论。
作为一个一次性的LISP程序员,我发现Clojure Koans非常高效和有条不紊。
使用三窗口安排(编辑+评估+ repl)即时反馈,文档参考和实时试验。
“教程”的主题组织得很好,并逐渐引入更复杂的材料。 如果你至less有一些LISP的经验,那么肯定是一个好的起点。
我会build议在github上研究clojure.contrib中的代码。
作为学习FP的一个练习,我会build议你只写一些你正在用Clojure编写的应用程序,但是不要使用任何Refs或循环。 致力于使用recursion来解决您的问题。 如果您认为您必须使用Ref或循环,请确保您可以解释原因。
正如其他人所说欧拉项目是一个很好的起点。 但是选一本好书可以教会clojure实现的基本原理和基本原理,Stuart Halloway编写的Clojure编程思想。
一旦你做完了,蒂莫西·鲍德里奇提供了几个video教程,他解剖core.async,传感器,逻辑编程和许多其他有趣的东西,玩在附近: https ://tbaldridge.pivotshare.com/
我强烈推荐Hackerrank,它有function性编程领域: https ://www.hackerrank.com/domains/fp/intro
你可以检查你的技能不仅与clojure,但haskell,scala,erlang等等