Skip to content
Practicalli Clojure
Alternative Tools
Initializing search
GitHub
Practicalli Clojure
GitHub
Introduction
Introduction
Clojure in Fifteen Mins
REPL Workflow
Concepts
Concepts
Functional vs Imperative
From The Author
Contributing
Writing Tips
Install
Install
Java Host
Clojure CLI
Clojure CLI Overview
Clojure CLI Overview
Practicalli Config
Built-in Commands
Defining aliases
Execution Options
REPL Reloaded
Clojure Style
Clojure REPL
Clojure REPL
Coding
Managing Libraries
Help
Custom Startup
Troubleshoot
Theory REPL Uncovered
Clojure Projects
Clojure Projects
Template Projects
Template Projects
Practicalli Templates
Practicalli Templates
Minimal
Application
Service
Landing Page
Design Templates
Add Libraries
Namespaces
Rich Comment
Hotload in Project
Migrate projects
Package
Package
tools.build
Clojure Editors
Clojure Editors
Clojure LSP
Clojure LSP
Clojure LSP Snippets
Practicalli Snippets
Automation
Automation
Make
Data Inspectors
Data Inspectors
Clojure Inspector
Portal
Code Challenges
Code Challenges
4 Ever Clojure
4 Ever Clojure
Exercism
Exercism
RNA Transcription
Nucleotide Count
None
Space Age
Bob
Bob
Bob string approach
Bob solution - regex
Simple projects
Simple projects
Random Function
Tripple Lock
Encoder Decode
Encoder Decode
Convert boolean values
Caesar Cipher ROT13
RNA to DNA transcription
Clacks Messages
Data Transform
Data Transform
Most common word
Mutating State
Mutating State
Mutants Assemble
TDD Kata
TDD Kata
Recent Song list
Salary Slip Generator
CodeWars
Advent Of Code
Games
Games
TicTacToe
TicTacToe
Testing
Testing
Unit Testing
Unit Testing
Writing Tests
Fixtures
Test Selectors
Test runners
Test runners
Kaocha
Cognitect Labs
Example Projects
Clojure Spec
Clojure Spec
REPL Experiments
Project config
Organise spec
Data Specs
Data Specs
None
Literal values
Conform
Is the value valid?
Explaining non-conforming values
Defining specifications
Registry for unique and re-usable specifications
Entity maps
Map literal syntax - #: and #::
Combining specifications with and and or
Composing Specifications
Hierarchical Specifications
Function Specs
Function Specs
Function definition specifications
Documentation
Higher order functions
Testing
Testing
Checking arguments in function calls with specifications
Generative Testing
Generative Testing
Generators for predicate specifications
Example projects using Clojure Spec
Projects using Clojure spec - next-jdbc
Spec Project
Spec Project
Playing Cards
Playing Cards
Bank Account
Bank Account
Write failing tests
Customer details specification
Testing data Specifications
Account holder specification
Generate test data
Unit tests with specs
Specifications for function definitions - fdef
Test functions against spec
Continuous Integration
Continuous Integration
Circle CI
Circle CI
Random Clojure Function
Status Monitor Circle CI Continuous Integration
GitHub Workflow
GitHub Workflow
Reference
Reference
Clojure Quick Reference
Clojure CLI
Clojure CLI
None
Common alias definitions
Reference: Clojure CLI JVM Options
Code Analysis
Standard Library
Standard Library
Destructuring
Clojure Predicate functions
Regular Expressions
Regular Expressions
Matching with regex groups
Matching sub strings
Matching sub sequences
Common Regular Expression patterns
String replace with regex
String split with regex
Sub-expression Matches
Clojure cond->
Java
Java
Java Interoperability
More Java fun
Clojure Syntax
Clojure Syntax
Clojure syntax
Parenthesis - defining the structure of Clojure code
Code documentation
Comments
Strings
Maths
Ratios
Control Flow
Doc and source functions
Assigning Names
Naming
Clojure names use kebab-case
Reference: Threading macros
uuid tag literal
Data Structures
Data Structures
List
Data Structures: Hash-maps
Creating Hash-maps
Accessing hash-maps
Vector
Set
Naming data structures
Shared memory with Persistent data structures
Pretty Printing
Using Data Structures
Using Data Structures
Sequence abstractions
Lazy Sequences
Destructuring
Applying functions to data structures
Mapping functions over data structures
Modifying
Modifying
Lists
Maps
Vectors
Sets
Iterate over data
map function
map with partial
map with fn - anonymous function
filter and remove
apply
reduce
reduce
reduce
Design
Design
With Vectors
With Vectors of Vectors
Design with Maps
With Maps of Maps
A Vector of Maps
Model alphabet codes
Design a map for name generation
Thinking Functionally
Thinking Functionally
Side effects
Pure functions
Impure functions
First Class functions
Homoiconicity
Function Composition
Example: Hitchhikers Guide
Higher Order functions
Immutability
Immutable values
Immutable collections
Immutable Local Bindings
Currying & Partial Functions
map with partial
List Comprehension
Sequences
None
Functors
Arity
Pattern matching
Polymorphic function definitions
Recursion
Recursion & Polymorphism
Tail recursion
Crreative Coding
Crreative Coding
None
SVG
SVG
JVM
JVM
Memory usage
Common JVM Options
Reference: Java 17 JVM flags
Reference: JVM Experimental Options
Profile tools
Clojure Performance
Alternative Tools
Alternative Tools
Basic Terminal REPL UI
Evaluating an expression with Clojure CLI tools
Set namespace on REPL startup
Alternative Tools
λ︎
Back to top