Coding Challenges for Clojureλ︎
Coding challenges are an excellent way to start learning a new language. The challenges allow you to focus on the language and not be concerned about the more general engineering aspects of software development.
Challenges are there to explore a language and practice your understanding of how to assemble working code. It is recommended to try different approaches to solving a challenges and even repeat the same challenges at a later date and see what additional approaches you have learned.
Exercism.io and 4Ever-Clojure are highly recommended starting point for learning Clojure and does not require any installation or setup. 4Ever-Clojure is a new implementation of 4Clojure.com.
Approach to solving challengesλ︎
Take a few minutes to digest the description of the challenge and make notes.
Identify the simplest possible thing to do, solving the problem in many small pieces which encourages experimentation
- experiment, write code and evaluate to see what it does (optionally create a comment with the result)
- use a rich comment
(comment ,,,)to capture multiple ideas and designs, even failed experiments can be useful (separates experiments from working code)
- continually evaluate code as expressions are written, to ensure their behaviour is understood (try different argument values for functions)
- try different shapes of data
- transform data shapes to keep function definitions simpler
Once there is a working solution, refactor or try different approaches and evaluate the merit of alternative solutions
|4Ever-Clojure||Learning the core functions of the Clojure language||Web Browser|
|Exercism.io||Coding exercises with mentor support||Web Browser (local: Exercism CLI, Clojure CLI & Clojure aware editor|
|ClojureScript Koans||Interactive exercises in a web browser||Web Browser|
|Simple Projects||Challenge that can be solved in one session||Clojure aware editor|
|TDD Code Kata||Challenge that can be solved in one session||Clojure aware editor|
|Advent of Code||Yearly coding challenge with a seasonal theme||Clojure aware editor|
|CodeWars||Mostly math-based coding challenges with Clojure variants||Web Browser|