HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
functional-koans
clojure-koans
Clojure2011–2020
functional-koans / clojure-koans

clojure-koans

A set of exercises for learning Clojure

13Distinct people
13Mentions
0Explicit recommenders
3.8KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A set of exercises for learning Clojure

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 6:01:08 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year13 dated mentions

Observed mentions: 2011-08-13 14:47:48 UTC to 2020-04-05 17:44:33 UTC.

0123452011-01-01 00:00:00 UTC to 2012-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments20112012-01-01 00:00:00 UTC to 2013-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20152016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2020

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20112011-01-01 00:00:00 UTC2012-01-01 00:00:00 UTC211
20122012-01-01 00:00:00 UTC2013-01-01 00:00:00 UTC505
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC404
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC000
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC000
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC000
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC000
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC101
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC000
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC101

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
Clojure Koans The Clojure Koans are a fun way to get started with Clojure - no experience assumed or required. Follow the instructions below to start making tests pass! Getting Started I recommend starting from a cloned or forked repo. This way you'll be able to track your progress in Git. You might want to create your own branch - that way if you pull back the latest koans from master, it'll be a bit easier to manage the inevitable conflicts if we make changes to exercises you've already completed. You have a few options for installation: Install the dependencies for the koans (such as Clojure) on your machine Use Vagrant and the configuration in this repository Use Docker Instructions for each option are below! Installation on Your Machine The only things you'll need to run the Clojure Koans are: JDK (I suggest version 8, but anything 6 or above should work fine) Leiningen, a build tool for Clojure Once you've cloned this repo and installed the dependencies, you can run: lein repl to make sure all the dependencies get downloaded properly (and then (exit) when you want to quit). See below for details on the REPL. Installation with Vagrant Make sure you have Vagrant and VirtualBox installed. In the root directory of the project, execute: vagrant up vagrant ssh cd /vagrant lein koan run Installation with Docker Once you've got Docker installed, you're basically all set. You can run these commands to get started: To run koans: docker run --rm -it -v $(pwd):/app -w /app clojure lein koan run To start up a REPL: docker run --rm -it -v $(pwd):/app -w /app clojure lein repl Running the Koans Run the koans via: lein koan run If want to run directly from a REPL, once you are inside the lein repl prompt you can run the koans with (exec "run") Either way, it's an auto-runner, so as you save your files with the correct answers, it will advance you to the next koan or file (conveniently, all files are prefixed with the sequence that you should follow). You'll see something like this: Now meditate on /home/colin/Projects/clojure-koans/src/koans/01_equalities.clj:3 --------------------- Assertion failed! We shall contemplate truth by testing reality, via equality. (= __ true) The output is telling you that you have a failing test in the file named 01_equalities.clj, on line 3. So you need to open that file up and make it pass! You'll always be filling in the blanks to make tests pass. Sometimes there could be several correct answers (or even an infinite number): any of them will work in these cases. Some tests will pass even if you replace the blanks with whitespace (or nothing) instead of the expected answer. Make sure you give one correct expression to replace each blank. The koans differ from normal TDD in that the tests are already written for you, so you'll have to pay close attention to the failure messages, because up until the very end, making a test pass means that the next failure message comes up. While it might be easy (especially at first) to fill in the blanks making things pass, you should work thoughtfully, making sure you understand why the answer is what it is. Enjoy your path to Clojure enlightenment! Trying more things out It's very useful to try things out in a REPL (Read-Evaluate-Print Loop) whenever you get stuck or curious. Run: lein repl and you'll be able to type expressions in, and see what output they produce. Here are some interesting commands you might try, once you're in a running REPL: (find-doc "vec") (find-doc #"vec$") (doc vec) And if those still don't make sense: (doc doc) (doc find-doc) will show you what those commands mean. You can exit the REPL with CTRL-d, (exit), or (quit). Contributing Patches are encouraged! Make sure the answer sheet still passes (lein koan test), and send a pull request. The file ideaboard.txt has lots of good ideas for new koans to start, or things to add to existing koans. So write some fun exercises, add your answers to resources/koans.clj, and we'll get them in there! Please follow the guidelines in http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html for commit messages, and put your code in a feature branch (not master) before making the pull request. This makes patches easier to review. Feel free to contact me (Colin Jones / trptcolin) on Github or elsewhere if you have any questions or want more direction before you start pitching in. Contributors https://github.com/functional-koans/clojure-koans/contributors Credits These exercises were started by Aaron Bedra of Relevance, Inc. in early 2010, as a learning tool for newcomers to functional programming. Aaron's macro-fu makes these koans clear and fun to use and improve upon, and without Relevance's initiative, this project would not exist. Using the koans metaphor as a tool for learning a programming language started with the Ruby Koans by EdgeCase. License The use and distribution terms for this software are covered by the Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can be found in the file epl-v10.html at the root of this distribution. By using this software in any fashion, you are agreeing to be bound by the terms of this license.
Read the full README on GitHub

What Hacker News says

4 sources
If you're referring to core.async specifically, keep in mind it's very new. Its readme[1] goes as far as to say, "This library is work-in-progress, experimental, broken etc. It should only be used by people working on it, ATM." With more maturity will surely come more examples and tutorials. But if you mean Clojure(Script) in general, I kind of agree. There are some beginner friendly tutorials; lately Andrew Brehaut's intro to the Clojure web stack[2] has been smooth going for me, despite being a bit dated. But you have to look around. In particular, I've found the small-scale mechanics of the language easy to pick up via Clojure Koans[3], 4clojure[4], and ClojureDocs[5]. What's missing the most IMHO is approachable introductions to the big-picture concepts. Especially the less generically lispy, more Clojure-specific parts, concerned wit
Read the rest
h concurrency and state. (I hear the book Clojure Programming by Emerick et al. is good for that... have yet to read.) I kind of understand Clojure not being easy or quick to learn, because powerful tools take time to master. But even with that said, it could be better. When I get confident with Clojure I hope to be part of a new wave of Clojurists who write really beginner-friendly tutorials :) I think it won't be the "gurus" who write them, but regular joes/janes like you and me for whom the initial difficulty of this stuff is still a fresh memory. [1] https://github.com/clojure/core.async [2] http://brehaut.net/blog/2011/ring_introduction [3] https://github.com/functional-koans/clojure-koans [4] http://4clojure.com/ [5] http://clojuredocs.org/
In Communicating Sequential Processes
Read the rest
In Lisp Koans by Google

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.