我正在学习Clojure函数式编程。你能推荐哪些实用的练习呢?最好是有在线答案库。
我想到的一个想法是自己实现所有流行排序、树、图等算法。虽然这个方法可能可行,但对我来说可能会很费力,并且效率不够高(与那些知道该怎么做的人相比)。
我正在学习Clojure函数式编程。你能推荐哪些实用的练习呢?最好是有在线答案库。
我想到的一个想法是自己实现所有流行排序、树、图等算法。虽然这个方法可能可行,但对我来说可能会很费力,并且效率不够高(与那些知道该怎么做的人相比)。
4clojure 最近推出了。它从 Functional Koans 和 99 Lisp Problems 中汲取了很多灵感,但通过提供一个只需要浏览器的学习体验来改进了这两者。
问题的难度不一,有像这个列表的第二个元素是什么?这样的语言教程题,也有引人思考的问题,例如是否可以将这 N 个单词排列,使每个单词与前面的单词之间最多只相差一个字符,每天都会添加更多的问题。
我建议尝试Project Euler 练习:
Project Euler 是一系列具有挑战性的数学/计算机编程问题,需要不仅数学洞察力,还需要使用计算机和编程技能来解决。尽管数学将帮助你找到优雅而高效的方法,但大多数问题需要使用计算机和编程技能来解决。
许多程序员正在解决 Project Euler 练习,您可以比较其他(非功能性)编程语言的解决方案,同时也可以查看 Clojure 解决方案:http://clojure-euler.wikispaces.com/,这样就可以对比命令式与函数化的 Clojure 的差异.
当然,最好自己先尝试练习,不要在未完成之前参考任何解决方案。
我最近自学Clojure,发现labrepl很有用。
它可以让你熟悉基础和REPL,并包含了许多练习和描述不明显的内容,在文档中很难找到,因为你还不知道自己在找什么。
推荐使用。
编辑
另外还有Python Challenge,一系列的谜题可以通过几行编程解决;解决一个谜题可以得到下一个谜题的网址。
虽然不是专门针对Clojure的,但这些谜题非常有趣,是学习任何新语言的好方法。其中有一些谜题是特定于Python的,但大部分不是。当遇到困难时,请参见Python Challenge提示论坛。
与Euler任务不同的是,Python Challenge 更实践性更强,数学方面较少;任务包括像筛选图像字节和编程地跟踪超链接等内容。
有一些与Clojure相关的函数Koans:https://github.com/functional-koans/clojure-koans
我还没有尝试过这些,但听说评价不错。
正如其他人提到的那样,Project Euler是一个很好的开始之处。但选择一本能教你基础知识和Clojure实现原理的好书是很重要的,Stuart Halloway的《Programming Clojure》是一个不错的选择。
学完基础之后,Timothy Baldridge提供了几个视频教程,他在其中解析core.async、transducers、逻辑编程等有趣的东西,网址是:https://tbaldridge.pivotshare.com/
我强烈推荐Hackerrank,它拥有函数式编程领域:https://www.hackerrank.com/domains/fp/intro
你不仅可以用Clojure测试自己的技能,还可以使用Haskell、Scala、Erlang等等