【问题标题】:Learning functional/Clojure programming - practical exercises? [closed]学习函数式/Clojure 编程 - 实践练习? [关闭]
【发布时间】:2011-02-22 16:50:17
【问题描述】:
我正在学习使用 Clojure 进行函数式编程。您可以推荐哪些实际练习?带有解决方案的在线存储库将是完美的。
我能想到的一个想法是遍历所有流行的排序、树、图等算法,并自己在 Clojure 中实现它们。虽然它可以工作,但它可能非常陡峭,而且我可能会效率低下(与知道她在做什么的人相比)。
【问题讨论】:
标签:
functional-programming
clojure
【解决方案2】:
我建议你做 Project Euler 练习:
http://projecteuler.net/
Project Euler 是一系列
具有挑战性的数学/计算机
需要的编程问题
不仅仅是数学见解
解决。虽然数学会
帮助你达到优雅和
有效的方法,使用
计算机和编程技能将
需要解决大多数问题。
由于许多程序员正在解决 Project Euler 练习,您可以将解决方案与其他(非函数式)编程语言进行比较,而且 Clojure 解决方案也可用:http://clojure-euler.wikispaces.com/,因此您可以对比命令式与函数式/惯用的 Clojure。
当然,首先你自己做练习,而不用咨询任何解决方案,你会学到最多的东西。
【解决方案4】:
我最近开始自己学习 Clojure,发现 labrepl 很有用。
它让您熟悉基础知识和 REPL,包含许多练习并描述了很多在文档中很难找到的非显而易见的东西,因为您还不知道自己在寻找什么.
推荐。
编辑
还有Python Challenge,几行编程就能解决的一系列谜题;谜题的解决方案会为您提供下一个谜题要访问的 URL。
虽然不是专门的 Clojure,但这些谜题非常有趣,并且是让您了解任何新语言恕我直言的好方法。 (有几个特定于 Python 的谜题,但大多数不是。卡住时请参阅forum for Python Challenge Hints。)
Python Challenge 与 Euler 任务的不同之处在于更实用,更少以数学为导向;任务包括过滤图像的字节和以编程方式跟踪超链接。
【解决方案7】:
我建议在 github 上研究 clojure.contrib 中的代码。
作为学习 FP 的练习,我建议您只使用 Clojure 编写您当前正在开发的应用程序,但尽量不要使用任何 Refs 或循环。致力于使用递归在功能上解决您的问题。如果您认为必须使用 Ref 或循环,请确保您能解释为什么会这样。
【解决方案8】:
http://exercism.io/ 有几个不那么简单的练习,他们给你一个测试和描述,你提交一个解决方案,你通过查看其他人的代码来重构我强烈推荐它,而且它是多语言的,你可以做练习使用他们支持的任何编程语言。
正如其他人所提到的,Project Euler 是一个很好的起点。但是,请选择一本可以教您实现 clojure 的基础知识和基本原理的好书,Stuart Halloway 的 Programming Clojure 会浮现在脑海中。
一旦您完成了 Timothy Baldridge 提供的几个视频教程,他将剖析 core.async、传感器、逻辑编程和许多其他有趣的东西,请访问:https://tbaldridge.pivotshare.com/