Course
Skills Expanded
Clojure Fundamentals - Part 1
Learn functional programming with Clojure.
What you'll learn
Clojure is a functional programming language for the Java Virtual Machine. This course explores Clojure starting with the basics, with only a Java or C# programming background assumed.
Table of contents
Overview and the REPL
22mins
- Introduction 1m
- Clojure Objectives 1m
- Why Another Lisp? 1m
- Why ClojureScript? 1m
- Clojure and ClojureScript 1m
- Demo: Evaluation and the REPL 2m
- Traditional Evaluation 1m
- Clojure Evaluation 1m
- Operation Forms 1m
- Structure vs. Semantics 1m
- Literals 1m
- Data Structures 2m
- Metadata 1m
- Reader Macros 2m
- Demo: REPL Utilities 4m
- Leiningen Directory Structure 1m
- Maven Directory Structure 1m
- Summary 1m
Functions
38mins
- Introduction 1m
- Functions 2m
- Invoking Functions 1m
- Naming Functions 2m
- Demo: Defining and Naming Functions 5m
- let 2m
- Demo: let 1m
- Multiple Arity 2m
- Demo: Multiple Arity 2m
- Variadic Functions 2m
- apply 2m
- Demo: Variadic Functions and apply 4m
- Closures 2m
- Invoking Java Code 2m
- Chaining Access 1m
- Java Methods vs. Functions 1m
- Terse fn Reader Macro 1m
- Summary 4m
Namespaces
34mins
- Introduction 1m
- Why Namespaces? 2m
- What's in a Namespace? 1m
- Namespace-Qualified Vars 1m
- Namespace-Qualified Keywords 1m
- Namespaces in the REPL 1m
- Namespace Operations 1m
- require 2m
- Demo: require 3m
- use 2m
- Demo: use 7m
- Reloading Namespaces 1m
- import 1m
- Namespaces and Files 1m
- ns Declaration 1m
- ns :require 1m
- ns :use 1m
- ns :import 0m
- ns Complete Example 0m
- Demo: ns macro 5m
- Private Vars 1m
- the-ns 1m
- Namespace Introspection 1m
- Summary 2m
Collections
27mins
Destructuring
18mins
- Introduction 1m
- Destructuring 1m
- Sequential Destructuring 1m
- Sequential Destructuring with & 1m
- Ignoring Destructured Values with _ 1m
- Demo: Sequential Destructuring 5m
- Associative Destructuring 1m
- Associative Destructuring with :keys 1m
- Using :or for Default Values 1m
- Named Arguments 1m
- Demo: Associative Destructuring 5m
- Summary 1m
Sequences
17mins
- Introduction 1m
- Sequences 0m
- Sequence API 1m
- Demo: Sequence API 2m
- Sequences Over Structures 1m
- Sequences Over Functions 1m
- Sequences in the REPL 1m
- Sequence Library 1m
- Creating a Sequence 1m
- Seq In, Seq Out 1m
- Using a Seq 2m
- Demo: Working with Sequences 4m
- Adopting the Sequence Mindset 1m
- Summary 1m
Flow Control
28mins
- Introduction 0m
- Statements vs. Expressions 1m
- Flow Control Expressions 1m
- Truthiness 2m
- if 1m
- if/do 1m
- if-let 1m
- Demo: if-let 4m
- cond 2m
- condp 1m
- case 1m
- Demo: cond/condp/case 4m
- Recursion and Iteration 1m
- doseq 1m
- dotimes 1m
- while 0m
- for 0m
- loop 1m
- defn/recur 0m
- recur for Recursion 1m
- Demo: recur 2m
- Exception Handling 1m
- Throwing Exceptions 1m
- with-open 1m
- Summary 2m