我正在学习Clojure的函数式编程 . 你能推荐什么实际练习?使用解决方案的在线存储库将是完美的 .
我能想到的一个想法是通过排序,树,图等所有流行的算法,并在Clojure中实现它们 . 虽然它可以工作,但它可能非常陡峭,而且我很可能效率低下(与知道她在做什么的人相比) .
我建议做Euler项目练习:
http://projecteuler.net/
项目欧拉是一系列具有挑战性的数学/计算机编程问题,需要的不仅仅是数学见解 . 虽然数学将帮助您获得优雅而有效的方法,但是需要使用计算机和编程技能来解决大多数问题 .
由于许多程序员正在解决Project Euler练习,您可以将解决方案与其他(非功能)编程语言进行比较,但也可以使用Clojure解决方案:http://clojure-euler.wikispaces.com/,因此您可以对比命令式与功能性/惯用性Clojure .
当然,在没有咨询任何解决方案的情况下,您将首先自己学习练习 .
4clojure最近推出 . 它需要来自Functional Koans的很多灵感,以及来自99个Lisp问题的几个难题;但它通过提供您只需要浏览器的学习体验来改善它们 .
从诸如What is the second element of this list?之类的语言教程到诸如Is it possible to arrange these N words so that each differs from the preceding one by at most one character之类的发人深省的问题,问题各不相同,每天都会增加更多问题 .
试试99 Lisp Problems . 解决方案不是clojure,但它应该很容易翻译 .
我最近开始自己学习Clojure,发现labrepl很有用 .
它让你熟悉基础知识和REPL,包含一些练习,并描述了很多非显而易见的东西,很难在文档中找到,因为你还不知道你在寻找什么 .
推荐的 .
Edit
也是Python Challenge,一系列可以通过几行编程解决的难题;拼图的解决方案为您提供了访问下一个拼图的URL .
虽然不是特别的Clojure,但这些谜题非常有趣,并且是一种很好的方式,可以用任何新语言恕我直言 . (有几个特定于Python的谜题,但大多数都没有 . 当卡住时看到forum for Python Challenge Hints . )
Python挑战与Euler任务的不同之处在于更实用,更少数学导向;任务包括过滤图像的字节和以编程方式跟随超链接 .
Clojure有一些功能性的Koans:https://github.com/functional-koans/clojure-koans
我还没有尝试过这些,但听到了很好的评论 .
作为一个一次一次的LISP程序员,我发现Clojure Koans https://github.com/functional-koans/clojure-koans非常高效且有条不紊 .
使用三窗口排列(编辑器评估程序repl)进行即时反馈,文档参考和动态实验 .
“教程”的主题组织良好,逐步引入更复杂的材料 . 如果你至少有一些LISP经验,那肯定是一个很好的起点 .
我建议在github上研究clojure.contrib中的代码 .
作为学习FP的练习,我建议您只编写您目前在Clojure中使用的应用程序,但尽量不要使用任何Refs或循环 . 致力于使用递归在功能上解决您的问题 . 如果您认为必须使用Ref或循环,请确保您可以解释原因 .
http://exercism.io/有几个不那么重要的练习,他们给你一个测试和描述,你提交一个解决方案,你通过查看其他人重构你可以用他们支持的任何编程语言进行练习 .
正如其他人所说,项目欧拉是一个很好的起点 . 但是请选择一本好书,它将教你如何实现clojure的基本原理和理论,Stuart Halloway的编程Clojure浮现在脑海中 .
完成后,Timothy Baldridge提供了几个视频教程,在这些教程中,他分析了core.async,传感器,逻辑编程以及许多其他有趣的东西,可以在:https://tbaldridge.pivotshare.com/
我强烈推荐Hackerrank,它有函数式编程域:https://www.hackerrank.com/domains/fp/intro
你不仅可以通过clojure检查你的技能,还可以检查你的技能,包括haskell,scala,erlang等等
9 回答
我建议做Euler项目练习:
http://projecteuler.net/
由于许多程序员正在解决Project Euler练习,您可以将解决方案与其他(非功能)编程语言进行比较,但也可以使用Clojure解决方案:http://clojure-euler.wikispaces.com/,因此您可以对比命令式与功能性/惯用性Clojure .
当然,在没有咨询任何解决方案的情况下,您将首先自己学习练习 .
4clojure最近推出 . 它需要来自Functional Koans的很多灵感,以及来自99个Lisp问题的几个难题;但它通过提供您只需要浏览器的学习体验来改善它们 .
从诸如What is the second element of this list?之类的语言教程到诸如Is it possible to arrange these N words so that each differs from the preceding one by at most one character之类的发人深省的问题,问题各不相同,每天都会增加更多问题 .
试试99 Lisp Problems . 解决方案不是clojure,但它应该很容易翻译 .
我最近开始自己学习Clojure,发现labrepl很有用 .
它让你熟悉基础知识和REPL,包含一些练习,并描述了很多非显而易见的东西,很难在文档中找到,因为你还不知道你在寻找什么 .
推荐的 .
Edit
也是Python Challenge,一系列可以通过几行编程解决的难题;拼图的解决方案为您提供了访问下一个拼图的URL .
虽然不是特别的Clojure,但这些谜题非常有趣,并且是一种很好的方式,可以用任何新语言恕我直言 . (有几个特定于Python的谜题,但大多数都没有 . 当卡住时看到forum for Python Challenge Hints . )
Python挑战与Euler任务的不同之处在于更实用,更少数学导向;任务包括过滤图像的字节和以编程方式跟随超链接 .
Clojure有一些功能性的Koans:https://github.com/functional-koans/clojure-koans
我还没有尝试过这些,但听到了很好的评论 .
作为一个一次一次的LISP程序员,我发现Clojure Koans https://github.com/functional-koans/clojure-koans非常高效且有条不紊 .
使用三窗口排列(编辑器评估程序repl)进行即时反馈,文档参考和动态实验 .
“教程”的主题组织良好,逐步引入更复杂的材料 . 如果你至少有一些LISP经验,那肯定是一个很好的起点 .
我建议在github上研究clojure.contrib中的代码 .
作为学习FP的练习,我建议您只编写您目前在Clojure中使用的应用程序,但尽量不要使用任何Refs或循环 . 致力于使用递归在功能上解决您的问题 . 如果您认为必须使用Ref或循环,请确保您可以解释原因 .
http://exercism.io/有几个不那么重要的练习,他们给你一个测试和描述,你提交一个解决方案,你通过查看其他人重构你可以用他们支持的任何编程语言进行练习 .
正如其他人所说,项目欧拉是一个很好的起点 . 但是请选择一本好书,它将教你如何实现clojure的基本原理和理论,Stuart Halloway的编程Clojure浮现在脑海中 .
完成后,Timothy Baldridge提供了几个视频教程,在这些教程中,他分析了core.async,传感器,逻辑编程以及许多其他有趣的东西,可以在:https://tbaldridge.pivotshare.com/
我强烈推荐Hackerrank,它有函数式编程域:https://www.hackerrank.com/domains/fp/intro
你不仅可以通过clojure检查你的技能,还可以检查你的技能,包括haskell,scala,erlang等等