学习功能/ Clojure编程 - 实践练习?

Kon*_*rus 41 functional-programming clojure

我正在学习Clojure的函数式编程.你能推荐什么实际练习?使用解决方案的在线存储库将是完美的.

我能想到的一个想法是通过排序,树,图等所有流行的算法,并在Clojure中实现它们.虽然它可以工作,但它可能非常陡峭,而且我很可能效率低下(与知道她在做什么的人相比).

ama*_*loy 23

4clojure最近推出.它需要很多来自Functional Koans的灵感,以及来自99个Lisp问题的几个难题; 但它通过提供您只需要浏览器的学习体验来改善它们.

问题的难度因语言教程而异,比如这个列表的第二个元素是什么?如此发人深省的问题是否有可能安排这N个单词,使每个单词与前一个单词的差异最多为一个字符,并且每天都会添加更多问题.


Mic*_*ent 18

我建议做项目欧拉练习:

http://projecteuler.net/

项目欧拉是一系列具有挑战性的数学/计算机编程问题,需要的不仅仅是数学见解.虽然数学将帮助您获得优雅而有效的方法,但是需要使用计算机和编程技能来解决大多数问题.

由于许多程序员正在解决Project Euler练习,您可以将解决方案与其他(非功能)编程语言进行比较,但也可以使用Clojure解决方案:http://clojure-euler.wikispaces.com/,这样您就可以对比命令式vs功能性/惯用性Clojure.

当然,在没有咨询任何解决方案的情况下,您将首先自己学习练习.

  • 维基已过期,网站http://clojure-euler.wikispaces.com/已不再可用 (3认同)

sep*_*p2k 13

尝试99 Lisp问题.解决方案不是clojure,但它应该很容易翻译.


j-g*_*tus 11

我最近开始自己学习Clojure,发现labrepl非常有用.

它让你熟悉基础知识和REPL,包含许多练习,并描述了很多非显而易见的东西,很难在文档中找到,因为你还不知道你在寻找什么.

推荐的.

编辑

还有Python挑战,一系列可以通过几行编程解决的难题; 拼图的解决方案为您提供了访问下一个拼图的URL.

虽然不是特别的Clojure,但这些谜题非常有趣,并且是一种很好的方式,可以用任何新语言恕我直言.(有一些特定于Python的谜题,但大多数都不是.请参阅论坛以获取Python挑战提示.)

Python挑战与欧拉任务的不同之处在于更实用,更少数学导向; 任务包括过滤图像的字节和以编程方式跟随超链接.


pau*_*doo 8

Clojure有一些功能性的Koans:https://github.com/functional-koans/clojure-koans

我没有试过这些,但听到了很好的评论.


小智 7

作为一个一次一次的LISP程序员,我发现Clojure Koans https://github.com/functional-koans/clojure-koans非常高效且有条不紊.

使用三窗口排列(编辑器+评估器+ repl)进行即时反馈,文档参考和动态实验.

"教程"的主题组织得很好,并逐渐引入更复杂的材料.如果你至少有一些LISP经验,那肯定是一个很好的起点.


Psy*_*llo 6

我建议在github上研究clojure.contrib中的代码.

作为学习FP的练习,我建议您只编写您目前在Clojure中使用的应用程序,但尽量不要使用任何Refs或循环.致力于使用递归在功能上解决您的问题.如果您认为必须使用Ref或循环,请确保您可以解释原因.