学习函数式/Clojure编程 - 实战练习?

42

我正在学习Clojure函数式编程。你能推荐哪些实用的练习呢?最好是有在线答案库。

我想到的一个想法是自己实现所有流行排序、树、图等算法。虽然这个方法可能可行,但对我来说可能会很费力,并且效率不够高(与那些知道该怎么做的人相比)。


https://clojurecademy.com 是非常不错的资源。 - Ertuğrul Çetin
"https://github.com/DerekCuevas/interview-cake-clj/tree/master/apple-stocks/src/apple_stocks" "https://github.com/careercup/CtCI-6th-Edition-Clojure" - madeinQuant
9个回答

23

19

我建议尝试Project Euler 练习:

http://projecteuler.net/

Project Euler 是一系列具有挑战性的数学/计算机编程问题,需要不仅数学洞察力,还需要使用计算机和编程技能来解决。尽管数学将帮助你找到优雅而高效的方法,但大多数问题需要使用计算机和编程技能来解决。

许多程序员正在解决 Project Euler 练习,您可以比较其他(非功能性)编程语言的解决方案,同时也可以查看 Clojure 解决方案:http://clojure-euler.wikispaces.com/,这样就可以对比命令式与函数化的 Clojure 的差异.

当然,最好自己先尝试练习,不要在未完成之前参考任何解决方案。


3
该网站 http://clojure-euler.wikispaces.com/ 不再可用,因为该Wiki已过期。 - rcbevans

13

尝试99个Lisp问题。这些解决方案不是用Clojure编写的,但应该很容易翻译。


10

我最近自学Clojure,发现labrepl很有用。

它可以让你熟悉基础和REPL,并包含了许多练习和描述不明显的内容,在文档中很难找到,因为你还不知道自己在找什么。

推荐使用。

编辑

另外还有Python Challenge,一系列的谜题可以通过几行编程解决;解决一个谜题可以得到下一个谜题的网址。

虽然不是专门针对Clojure的,但这些谜题非常有趣,是学习任何新语言的好方法。其中有一些谜题是特定于Python的,但大部分不是。当遇到困难时,请参见Python Challenge提示论坛

与Euler任务不同的是,Python Challenge 更实践性更强,数学方面较少;任务包括像筛选图像字节和编程地跟踪超链接等内容。


8

本文介绍了如何开始使用三种语言的koans,包括clojure:http://sett.ociweb.com/sett/settJan2011.html#clojure-koans - Cincinnati Joe

7
作为曾经的LISP程序员,我发现Clojure Koans非常高效和系统化。使用三个窗口(编辑器+评估器+REPL)进行即时反馈、文档参考和实时试验。 "教程"的主题组织得很好,逐步引入更复杂的材料。如果你至少有一些LISP经验,这肯定是一个很好的起点。请参考https://github.com/functional-koans/clojure-koans

6
我建议在github上学习clojure.contrib中的代码。
作为学习FP的练习,我建议只需用Clojure编写您目前正在开发的应用程序,但是尽量不要使用Refs或循环。致力于使用递归以函数式方式解决问题。如果您认为必须使用Ref或循环,请确保您能够解释其原因。

2
http://exercism.io/有几个不太容易的练习,它们会给你一个测试和描述,您提交解决方案并通过查看其他人的代码进行重构。我强烈推荐这个网站,而且它对多种编程语言都支持。

正如其他人提到的那样,Project Euler是一个很好的开始之处。但选择一本能教你基础知识和Clojure实现原理的好书是很重要的,Stuart Halloway的《Programming Clojure》是一个不错的选择。

学完基础之后,Timothy Baldridge提供了几个视频教程,他在其中解析core.async、transducers、逻辑编程等有趣的东西,网址是:https://tbaldridge.pivotshare.com/


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接