User Tools

Site Tools


programming:clojure

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
programming:clojure [2013/08/22 12:05]
robert.pergl [Functional Programming]
programming:clojure [2015/09/20 12:17] (current)
Line 1: Line 1:
 ====== Clojure Programming ====== ====== Clojure Programming ======
  
-===== Clojure Advocacy =====+===== Clojure ​/ FP Advocacy =====
  
 +  * [[http://​www.youtube.com/​watch?​v=7aYS9PcAITQ|Functional Thinking (video)]]
 +  * [[http://​www.braveclojure.com/​]]
   * [[http://​www.infoq.com/​presentations/​Simple-Made-Easy|Rich Hickey: Simple Made Easy]]   * [[http://​www.infoq.com/​presentations/​Simple-Made-Easy|Rich Hickey: Simple Made Easy]]
   * [[http://​yogthos.net/​blog/​49|Why I'm Productive in Clojure]]   * [[http://​yogthos.net/​blog/​49|Why I'm Productive in Clojure]]
   * [[http://​adambard.com/​blog/​you-write-php-because-you-dont-know-better?​goback=%2Egde_1058217_member_251460226|YOU USE PHP BECAUSE YOU DON'T KNOW BETTER]]   * [[http://​adambard.com/​blog/​you-write-php-because-you-dont-know-better?​goback=%2Egde_1058217_member_251460226|YOU USE PHP BECAUSE YOU DON'T KNOW BETTER]]
 +  * [[http://​blog.safaribooksonline.com/​2013/​08/​05/​clojure-data-uniformity/​|Clojure data uniformity]] -- an explanation of benefits of direct data access compared to object-oriented approach. This is also mentioned in [[http://​www.youtube.com/​watch?​v=7aYS9PcAITQ|Functional Thinking (video)]]
 ===== Functional Programming ===== ===== Functional Programming =====
 +  * [[http://​www.youtube.com/​watch?​v=7aYS9PcAITQ&​feature=youtu.be|Functional Thinking (video)]]
   * [[http://​skillsmatter.com/​podcast/​home/​functional-programming-in-the-enterprise-4235/​mh-7546?​goback=%2Egde_1058217_member_246498414|John Pither: Functional Programming for the Enterprise]]   * [[http://​skillsmatter.com/​podcast/​home/​functional-programming-in-the-enterprise-4235/​mh-7546?​goback=%2Egde_1058217_member_246498414|John Pither: Functional Programming for the Enterprise]]
   * [[http://​stackoverflow.com/​questions/​5074781/​editing-programs-while-they-are-running-why?​goback=%2Egde_1058217_member_246984118|Why to edit programs while they are running]]   * [[http://​stackoverflow.com/​questions/​5074781/​editing-programs-while-they-are-running-why?​goback=%2Egde_1058217_member_246984118|Why to edit programs while they are running]]
Line 15: Line 19:
  
 ==== Books ==== ==== Books ====
 +  * \cite{bib:​fogus-joy-of-clojure},​ \cite{bib:​halloway-programming-clojure},​ \cite{bib:​vanderhart-practical-clojure}
   * [[http://​juliangamble.com/​blog/​2012/​07/​13/​amazing-lisp-books-living-again-in-clojure/​|Lisp Books made into Clojure]]   * [[http://​juliangamble.com/​blog/​2012/​07/​13/​amazing-lisp-books-living-again-in-clojure/​|Lisp Books made into Clojure]]
  
 ==== Quick Guides ==== ==== Quick Guides ====
  
 +  * Tutorial for "​children":​ Comics [[http://​www.lisperati.com/​clojure-spels/​casting.html|Casting spells with Lisp]]
   * [[https://​github.com/​bbatsov/​clojure-style-guide?​goback=%2Egde_1058217_member_245907598#​readme|Clojure Style Guide]]   * [[https://​github.com/​bbatsov/​clojure-style-guide?​goback=%2Egde_1058217_member_245907598#​readme|Clojure Style Guide]]
   * [[http://​hyperpolyglot.org/​lisp?​goback=%2Egde_1058217_member_246210504|A side-by-side reference sheet (Lisp: Common Lisp, Scheme, Clojure, Emacs Lisp)]]   * [[http://​hyperpolyglot.org/​lisp?​goback=%2Egde_1058217_member_246210504|A side-by-side reference sheet (Lisp: Common Lisp, Scheme, Clojure, Emacs Lisp)]]
   * [[http://​cemerick.com/​2011/​07/​05/​flowchart-for-choosing-the-right-clojure-type-definition-form/?​goback=%2Egde_1058217_member_246437578|Flowchart for choosing the right Clojure type definition form]]   * [[http://​cemerick.com/​2011/​07/​05/​flowchart-for-choosing-the-right-clojure-type-definition-form/?​goback=%2Egde_1058217_member_246437578|Flowchart for choosing the right Clojure type definition form]]
   * [[http://​java.dzone.com/​articles/​clojure-macros-beginners?​utm_source=dlvr.it&​utm_medium=twitter&​utm_campaign=Feed%3A+javalobby%2Ffrontpage+%28Javalobby+%2F+Java+Zone%29&​goback=%2Egde_1058217_member_248790889|Clojure macros for beginners]]   * [[http://​java.dzone.com/​articles/​clojure-macros-beginners?​utm_source=dlvr.it&​utm_medium=twitter&​utm_campaign=Feed%3A+javalobby%2Ffrontpage+%28Javalobby+%2F+Java+Zone%29&​goback=%2Egde_1058217_member_248790889|Clojure macros for beginners]]
 +  * [[http://​www.infoq.com/​presentations/​DDD-Clojure|Domain-Driven Design with Clojure]] -- video about Clojure programmes design ​
  
 ==== Learning ==== ==== Learning ====
 +
 +  * [[http://​www.unexpected-vortices.com/​clojure/​brief-beginners-guide/​index.html|Brief Beginner'​s Guide to Clojure]]
 +  * [[http://​www.codeschool.com/​code_tv/​getting-started-with-clojure-part-1|Getting Started with Clojure - Part 1]]
   * [[http://​www.4clojure.com]]   * [[http://​www.4clojure.com]]
   * [[http://​www.clojureatlas.com/​|Beautiful Clojure concepts visualisation]]   * [[http://​www.clojureatlas.com/​|Beautiful Clojure concepts visualisation]]
   * [[https://​github.com/​clojure-cookbook/​clojure-cookbook|Clojure Cookbook]]   * [[https://​github.com/​clojure-cookbook/​clojure-cookbook|Clojure Cookbook]]
 +  * [[https://​tbaldridge.pivotshare.com/?​m_sort=view&​m_order=desc|Video tutorials]] 
 +  * [[http://​aphyr.com/​tags/​Clojure-from-the-ground-up|Clojure from the ground up]]
 ==== Specific / Advanced Topics ==== ==== Specific / Advanced Topics ====
   * [[http://​www.infoq.com/​articles/​in-depth-look-clojure-collections?​goback=%2Egde_1058217_member_248368199|On sequences and immutability]]   * [[http://​www.infoq.com/​articles/​in-depth-look-clojure-collections?​goback=%2Egde_1058217_member_248368199|On sequences and immutability]]
   * [[http://​blog.8thlight.com/​colin-jones/​2010/​12/​05/​clojure-libs-and-namespaces-require-use-import-and-ns.html|Libs and namespaces]]   * [[http://​blog.8thlight.com/​colin-jones/​2010/​12/​05/​clojure-libs-and-namespaces-require-use-import-and-ns.html|Libs and namespaces]]
 +  * [[http://​blog.jayfields.com/​2010/​07/​clojure-destructuring.html|Destructuring]]
   * [[http://​www.lispplusplus.com/​2013/​08/​io-as-data.html?​utm_source=dlvr.it&​utm_medium=twitter&​goback=.gde_1058217_member_264763964|IO as Data]]   * [[http://​www.lispplusplus.com/​2013/​08/​io-as-data.html?​utm_source=dlvr.it&​utm_medium=twitter&​goback=.gde_1058217_member_264763964|IO as Data]]
   * [[http://​clojure-doc.org/​articles/​tutorials/​growing_a_dsl_with_clojure.html|Growing a DSL]]   * [[http://​clojure-doc.org/​articles/​tutorials/​growing_a_dsl_with_clojure.html|Growing a DSL]]
   * [[http://​www.infoq.com/​presentations/​data-visibility-abstraction|Data,​ Visibility, Abstraction]]   * [[http://​www.infoq.com/​presentations/​data-visibility-abstraction|Data,​ Visibility, Abstraction]]
 +  * [[http://​blog.golang.org/​concurrency-is-not-parallelism|Concurrency is not parallelism (Go)]]; Clojure'​s take: [[http://​clojure.com/​blog/​2013/​06/​28/​clojure-core-async-channels.html|core.async]]
 +  * [[http://​pluralsight.com/​training/​Courses/​TableOfContents/​clojure-concurrency-tutorial|Clojure concurrency tutorial]]
 +  * [[https://​github.com/​MichaelDrogalis/​dire|Dire:​ decomplecting error behaviour]]
 +  * [[http://​pluralsight.com/​training/​Courses/​TableOfContents/​clojure-concurrency-tutorial|Clojure concurency tutorial]]
  
 +=== desktop GUI ===
 +  * [[https://​github.com/​daveray/​seesaw|Seesaw]]
  
 ==== Web Development ==== ==== Web Development ====
  
   * [[http://​clojurewebdev.com/​workshop/​slides/?​goback=.gde_1058217_member_263530163|Ultimate overview]]   * [[http://​clojurewebdev.com/​workshop/​slides/?​goback=.gde_1058217_member_263530163|Ultimate overview]]
-  * [[http://​pedestal.io/​|Pedestal Framework]],​ [[https://​github.com/​taylorSando/​pedestal-todo/​blob/​master/​beginners.md?​goback=.gde_1058217_member_264211873|Pedestal Beginner'​s Guide]]+  ​* [[https://​github.com/​magomimmo/​modern-cljs|ClojureScript tutorials]] 
 +  ​* [[http://​pedestal.io/​|Pedestal Framework]],​ [[https://​github.com/​taylorSando/​pedestal-todo/​blob/​master/​beginners.md?​goback=.gde_1058217_member_264211873|Pedestal Beginner'​s Guide]], [[http://​e-string.com/​articles/​the-simplest-possible-clojure-pedestal-app|Small example]] 
 +  * [[http://​hoplon.io|Hoplon:​ A Simpler way to program the web]]
   * [[http://​htmltohiccup.herokuapp.com/​|Online HTML->​Hiccup converter]]   * [[http://​htmltohiccup.herokuapp.com/​|Online HTML->​Hiccup converter]]
   * [[https://​github.com/​macourtney/​Conjure|Conjure:​ web framework a-la Django or Rails]]   * [[https://​github.com/​macourtney/​Conjure|Conjure:​ web framework a-la Django or Rails]]
Line 46: Line 66:
   * [[http://​www.webnoir.org|Noir Framework]] - deprecated, see [[http://​blog.raynes.me/​blog/​2012/​12/​13/​moving-away-from-noir/​|Moving away from Noir]]   * [[http://​www.webnoir.org|Noir Framework]] - deprecated, see [[http://​blog.raynes.me/​blog/​2012/​12/​13/​moving-away-from-noir/​|Moving away from Noir]]
   * [[http://​hugoduncan.org/​post/​webapp_with_core.async/​|todo webapp with core.async]]   * [[http://​hugoduncan.org/​post/​webapp_with_core.async/​|todo webapp with core.async]]
 +  * [[http://​ganelon.tomeklipski.com/​|Ganelon]] -- microframework for instant Ajax development
 +  * [[https://​github.com/​jduey/​appraiser|DSL for Web applications]] -- a very promising idea!!! ​ --- //​[[robert.pergl@fit.cvut.cz|Robert Pergl]] 2013/09/10 21:43//
  
 === ClojureScript === === ClojureScript ===
  
   * {{:​programming:​clojurescript_up_and_running.pdf|Book ClojureScript Up and Running}}   * {{:​programming:​clojurescript_up_and_running.pdf|Book ClojureScript Up and Running}}
 +  * [[https://​github.com/​shaunlebron/​How-To-Debug-CLJS|How to debug CLJS]]
 +  * [[https://​github.com/​magomimmo/​modern-cljs|ClojureScript tutorials]]
   * [[http://​himera.herokuapp.com/​index.html|ClojureScript compiler as a web service]]   * [[http://​himera.herokuapp.com/​index.html|ClojureScript compiler as a web service]]
   * [[https://​github.com/​cemerick/​austin|The ClojureScript browser-REPL]]   * [[https://​github.com/​cemerick/​austin|The ClojureScript browser-REPL]]
   * [[http://​keminglabs.com/​blog/​cljs-app-designs/​|A sampler of ClojureScript application designs]]   * [[http://​keminglabs.com/​blog/​cljs-app-designs/​|A sampler of ClojureScript application designs]]
 +  * [[https://​github.com/​Flamefork/​node-webkit-cljs|ClojureScript wrapper for Node Webkit]]
 +  * [[http://​zaiste.net/​2014/​02/​web_applications_in_clojure_all_the_way_with_compojure_and_om/?​goback=%2Egde_1058217_member_5839217728912658435|Web with Om (Facebook'​s React)]]
  
 +=== Mixed resources === 
 +  * [[http://​alexott.net/​en/​clojure/​video.html|Various videos]]
 ===== Tools and IDEs ===== ===== Tools and IDEs =====
 You definitely need [[http://​leiningen.org|Leiningen]] for easy project management. There is a multitude of IDE's available, however none is absolutely perfect, yet... You definitely need [[http://​leiningen.org|Leiningen]] for easy project management. There is a multitude of IDE's available, however none is absolutely perfect, yet...
Line 61: Line 88:
   * [[http://​www.jetbrains.com/​idea/​|IntelliJ Idea]] has a plugin La Clojure directly in its repository.   * [[http://​www.jetbrains.com/​idea/​|IntelliJ Idea]] has a plugin La Clojure directly in its repository.
   * [[https://​github.com/​arthuredelstein/​clooj|Clooj]] is elegant and very lightweight with limited capabilities   * [[https://​github.com/​arthuredelstein/​clooj|Clooj]] is elegant and very lightweight with limited capabilities
-  * [[http://​www.lighttable.com|LightTable]]'​s Instarepl is just awesome for playing around!+  * [[http://​www.lighttable.com|LightTable]]'​s Instarepl is just awesome for playing around! ​See [[http://​blog.maio.cz/​2013/​08/​getting-feel-for-light-tables-instarepl.html?​goback=.gde_1058217_member_269420119#​!|here]] for an inspiration
   * [[http://​www.boxuk.com/​blog/​unboxing-vim-fireplace/?​goback=%2Egde_1058217_member_245237788|vim-fireplace here]] and [[http://​clojure-doc.org/​articles/​tutorials/​vim_fireplace.html|here]] recommended together with [[https://​github.com/​dgrnbrg/​vim-redl|Redl plugin]] and [[https://​github.com/​guns/​vim-sexp|vim-sexp]]   * [[http://​www.boxuk.com/​blog/​unboxing-vim-fireplace/?​goback=%2Egde_1058217_member_245237788|vim-fireplace here]] and [[http://​clojure-doc.org/​articles/​tutorials/​vim_fireplace.html|here]] recommended together with [[https://​github.com/​dgrnbrg/​vim-redl|Redl plugin]] and [[https://​github.com/​guns/​vim-sexp|vim-sexp]]
   * Other tools at [[http://​dev.clojure.org/​display/​doc/​Clojure+Tools]].   * Other tools at [[http://​dev.clojure.org/​display/​doc/​Clojure+Tools]].
 +
 +==== Leiningen plugins ====
 +  * [[https://​github.com/​xsc/​lein-ancient|lein-ancient]] -- to check availability of newer versions of used libraries
 +  * [[https://​github.com/​jonase/​kibit|lein-kibit]] -- Clojure style checker
 +  * [[http://​hugoduncan.org/​post/​alembic_reloads_your_project_clj_dependencies]]
  
 ===== Tips and Tricks ===== ===== Tips and Tricks =====
   * [[http://​thinkrelevance.com/​blog/​2013/​06/​04/​clojure-workflow-reloaded?​goback=%2Egde_1058217_member_246727680|Clojure workflow]]   * [[http://​thinkrelevance.com/​blog/​2013/​06/​04/​clojure-workflow-reloaded?​goback=%2Egde_1058217_member_246727680|Clojure workflow]]
   * For Clojure DEBUGGING use [[https://​github.com/​ptaoussanis/​timbre|Timbre]] for logging and [[https://​github.com/​dgrnbrg/​spyscope|Spyscope]] for forms spying. An alternative is also [[https://​github.com/​timvisher/​what-does-tools-trace-do|clojure.trace]]   * For Clojure DEBUGGING use [[https://​github.com/​ptaoussanis/​timbre|Timbre]] for logging and [[https://​github.com/​dgrnbrg/​spyscope|Spyscope]] for forms spying. An alternative is also [[https://​github.com/​timvisher/​what-does-tools-trace-do|clojure.trace]]
 +  * [[http://​tech.puredanger.com/​2013/​08/​31/​clojure-and-testing/​|Survey of Clojure testing]]
  
 ===== Useful Libraries ===== ===== Useful Libraries =====
Line 74: Line 107:
   * [[https://​github.com/​marick/​Midje|Midje:​ gracious testing library]]   * [[https://​github.com/​marick/​Midje|Midje:​ gracious testing library]]
   * [[https://​github.com/​Engelberg/​instaparse|Instaparse:​ library for parsing]]   * [[https://​github.com/​Engelberg/​instaparse|Instaparse:​ library for parsing]]
 +  * [[http://​www.clojure-toolbox.com/​|A categorised directory of libraries and tools for Clojure]] 
 +  * [[https://​github.com/​rbrush/​clara-rules|Clara Rules: forward chaining rules in clojure]]
 ===== Interesting Solutions ===== ===== Interesting Solutions =====
   * [[http://​www.flyingmachinestudios.com/​programming/​building-a-forum-with-clojure-datomic-angular/?​goback=.gde_1058217_member_263505831|Forum]]   * [[http://​www.flyingmachinestudios.com/​programming/​building-a-forum-with-clojure-datomic-angular/?​goback=.gde_1058217_member_263505831|Forum]]
   * [[http://​rigsomelight.com/​2013/​08/​12/​clojurescript-core-async-dots-game.html|Dots game]]   * [[http://​rigsomelight.com/​2013/​08/​12/​clojurescript-core-async-dots-game.html|Dots game]]
   * [[http://​swannodette.github.io/​2013/​08/​17/​comparative/​|Autocompleter in ClojureScript]]   * [[http://​swannodette.github.io/​2013/​08/​17/​comparative/​|Autocompleter in ClojureScript]]
 +  * [[http://​www.markhneedham.com/​blog/​2013/​08/​26/​clojureenlive-screen-scraping-a-html-file-from-disk/​|Screen scraping]]
 +  * [[http://​keminglabs.com/​c2/​|C2:​ Clojure(Script) data visualization]]
  
 +===== Technical Topics =====
 +  * {{:​programming:​pppj13.pdf|Performance analysis of JVM-Hosted Languages}}
programming/clojure.1377165921.txt.gz · Last modified: 2015/09/20 12:17 (external edit)