Compilation of useful resources for learning Clojure
To Aggregate resources to learn and understand Clojure (and LISP in general).
[WIP] I will keep updating as i find new resources (My only rule is to understand the resource before putting it here).
- Clojure Homepage.
- Clojure Functional Programming.
- Clojure Glossary.
- Clojure API Documentation.
- Clojure reference.
- Clojure Contrib Library API Docs.
- Clojure reader.
- Clojure Distilled.
- Decomplecting Clojure
- Getting Acquainted With Clojure Zippers.
- Datatypes: deftype, defrecord and reify.
- Clojure: Updating keys in a map
- Flowchart for choosing the right Clojure type definition form
- Protocols.
- Multimethods and Hierarchies.
- Creating and Extending Abstractions with Multimethods, Protocols, and Records
- Random thoughts on Clojure Protocols
- Protocols in ClojureScript
- Solving the Expression Problem with Clojure 1.2
- Nil Punning (Or Null Pointers Considered Not So Bad)
- An interesting discussion about Nil punning
- Clojure Libs and Namespaces: require, use, import, and ns
- lein plugin to Show namespace dependencies of Clojure project sources as a graph
- Clojure Do’s: Namespace Aliases
- Clojure require vs. use
- Quoting Without Confusion.
- Clojure from the ground up: basic types.
- Clojure from the ground up: functions.
- Specifying default slot values for defrecord classes in Clojure
- Counting occurences
- Gin Rummy with Datomic
- Lisp: It's Not About Macros, It's About Read.
- How to read mentally Lisp/Clojure code
- It is not hard to read Lisp code
- The Anatomy of a Clojure Macro.
- Understandingc the Clojure -> macro.
- Clojure Macro Explorations of cond->
- Some syntactic sugar for Clojure's threading macros.
- Thrush in Clojure.
- Clojure Explained - Macros demystified
- What makes lisp macros so special
- Why Lisp macros are cool, a Perl perspective
- Clojure: partition-by, split-with, group-by, and juxt
- Writing Elegant Clojure Code Using Higher-Order Functions
- "Good Enough" error handling in Clojure
- Understanding Clojure’s Reduce Function
- Clojure: Apply a Function To Each Value of a Map
- Hand-Rolling Flatten: Coming to Grips with Tree-Seq
- How to remember the difference between conj and cons in Clojure
- The Weird and Wonderful Characters of Clojure
- Some Annotated clojure.core/reduce Examples
- Clojure: Composing Functions
- Clojure: State Management
- Writing Elegant Clojure Code Using Higher-Order Functions
- Clojure: Avoiding Anonymous Functions
- Implementing Map in Clojure
- clojure-mail.
- A library for reading and writing CSV files from Clojure.
- tools.cli.
- core.match.
- Trammel.
- core.logic.
- kibit.
- Schema
- clojure.math.numeric-tower
- Codox: A tool for generating API documentation
- Fluokitten: Category theory concepts in Clojure - Functors, Applicatives, Monads, Monoids and more
- Quil: Clojure/ClojureScript library for creating interactive drawings and animations.
- Component: Managed lifecycle of stateful objects in Clojure
- data.generators: Random data generators
- eastwood: Clojure lint tool
- Compojure
- ClojureScript
- Lein-figwheel
- Om: ClojureScript interface to Facebook's React
- Chestnut: Application template for ClojureScript/Om with live reloading
- Weasel: ClojureScript browser REPL using WebSockets
- Austin: The ClojureScript browser-REPL rebuilt stronger, faster, easier
- Ring: Clojure HTTP server abstraction
- lein-ring: Ring plugin for Leiningen
- Compojure: A concise routing library for Ring/Clojure
- Enlive: a selector-based (à la CSS) templating and transformation system for Clojure
- ClojureScript: Differences from Clojure
- clj-browserchannel
- Midje
- ClojureCheck
- QuickCheck for Clojure
- test.generative
- TDD Workflow in Clojure using Emacs with CIDER
- lein-test-refresh: Refreshes and reruns clojure.tests in your project
- collection-check: fuzz testing for alternate clojure data structures
- Spyscope
- Debugging in Clojure: Tools
- Clojure Stack Traces for the Uninitiated
- Reading Clojure Stacktraces
- More readable stacktraces for Clojure
- Clojure with Emacs
- [How to Use Emacs, an Excellent Clojure Editor](How to Use Emacs, an Excellent Clojure Editor)
- Getting Started With Cider Repl for Clojure on Emacs Live
- [Building, Running, and the REPL](Building, Running, and the REPL)
- Leiningen
- kibit
- CrossClj: cross-referencing the Clojure ecosystem
- Give your clojure workflow more flow
- Alembic - a library to control your classpath
- ClojureWerkz: A growing collection of open source Clojure libraries
- The Clojure Toolbox
- Open source clojure projects
- Comparing Core Async and Rx by Example
- Clojure core.async Channels
- Mastering Concurrent Processes with core.async
- Rock Paper Scissors with core.async
- Combining & Controlling Channels with core.async's merge and mix
- async-tests: Having fun with core.async
- Clojure core.async and Go: A Code Comparison
- Logic programming is overrated
- Logic Programming is Underrated: David Nolen response
- A Core.logic Primer
- Christopher Maier's Blog
- Bozhidar Batsov's Blog
- Christopher Grand - Clojure and me
- Jay Fields' Thoughts
- Pingles: Blog of Paul Ingles
- Inside Clojure : Alex Miller Blog
- gtrak collimator blog
- Chas Emerick
- Digital Digressions by Stuart Sierra
- michael fogus
- Thoughts on Programming
- clj.orcery by Chris Zheng
- LispCast
- λ thegeez blog
- Kotka Logo clojure tools » fine made & hand crafted