2010-05-22 37 views
38

我正在用Clojure學習函數式編程。你可以推薦什麼實踐練習?在線存儲庫和解決方案將是完美的。學習功能/ Clojure編程 - 實踐練習?

我能想到的一個想法是通過排序,樹,圖等所有流行的算法,並在Clojure自己實現它們。雖然它可以工作,但它可能非常陡峭,我可能做得不夠有效(與知道她在做什麼的人相比)。

+0

https://clojurecademy.com是非常好的資源 – 2017-10-04 11:44:31

回答

17

我會建議做項目歐拉練習:

http://projecteuler.net/

項目歐拉是一系列 具有挑戰性的數學/計算機 編程的問題,這需要的不僅僅是數學的見解 解決 更多。雖然數學會幫助你達到優雅和有效的方法,但要求使用計算機和編程技巧 來解決大多數問題。

由於很多程序員都解決項目歐拉的練習,可以將解決方案比其他(非功能性)編程語言,而且Clojure的解決方案可供選擇:http://clojure-euler.wikispaces.com/,這樣你就可以對功能性/地道Clojure的對比勢在必行。

當然,如果不諮詢任何解決方案,您將首先通過自己練習來學習最多。

+3

的站點http:/ /clojure-euler.wikispaces.com/已不在可用的wiki已過期 – o0rebelious0o 2015-01-08 17:36:03

11

我最近開始自己學習Clojure,發現labrepl有用。

它可以讓你熟悉基礎知識和REPL,包含許多練習,並且描述了很多非常明顯的東西,很難在文檔中找到,因爲你還不知道你在找什麼對於。

推薦。

編輯

另外,Python Challenge,一系列可以通過編程的幾行來解決難題;謎題解決方案爲您提供訪問下一個謎題的網址。

雖然不是特別的Clojure,但這些謎題相當具有娛樂性,並且是一種很好的方式讓你的雙腳與任何新的語言恕我直言。 (有一些特定於Python的謎題,但大多數謎題並非如此,請參見forum for Python Challenge Hints)。

Python挑戰與歐拉任務不同之處在於更實用和更少數學導向;任務包括像過濾圖像的字節和以編程方式跟蹤超鏈接等內容。

6

我會推薦學習github上的clojure.contrib的代碼。

作爲練習學習FP我建議只寫你目前的工作Clojure中的應用程序,但儘量不要使用任何參考文獻或循環。致力於使用遞歸功能解決您的問題。如果您認爲您必須使用Ref或循環,請確保您可以解釋原因。

8

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

我沒有得到一輪嘗試這些,但聽說很好的評價。

+0

本文介紹如何開始使用包括clojure在內的三種語言的koans:http://sett.ociweb.com/sett/settJan2011.html#clojure-koans – 2011-03-18 22:43:00

7

作爲一個曾經在一次一個LISP的程序員,我發現Clojure的Koans https://github.com/functional-koans/clojure-koans非常有效和有條不紊的聲音。

使用三個窗口排列(編輯+評估+ REPL)的即時反饋,文檔,參考和動態試驗。

「教程」的主題組織得很好,並逐漸引入更復雜的材料。如果你至少有一些LISP經驗,那麼肯定是一個好的起點。

2

http://exercism.io/有幾個不太平凡的練習,他們給你一個測試和描述,你提交一個解決方案,你通過查看其他人的代碼我強烈推薦它,再加上它是polyglot你可以做的練習他們支持的任何編程語言。

正如其他人所說的,歐拉項目是一個很好的開始。但請選擇一本好書,向您介紹clojure實施的基本原理和基本原理,Stuart Halloway編程Clojure就會浮現在腦海。

一旦你與蒂莫西·鮑德里奇完成提供他剖析core.async,換能器,邏輯編程和許多其他有趣的東西玩弄在幾個視頻教程:https://tbaldridge.pivotshare.com/