Clojure Fundamentals - Part 1
Learn functional programming with Clojure.
Authored by:
Alan Dipert
Duration: 3h 8m
Level: Intermediate
Released: 7/13/2012
Features:
Duration: 3h 8m
Level: Intermediate
Released: 7/13/2012
Features:
Course Rating:
You are currently not signed in. Please sign in to access subscriber-only content.
Currently using: {{getCurrentPlayerName()}} [Change]
| expand all | collapse all | Progress | Duration | |
|---|---|---|---|
Overview and the REPL |
|
00:22:39 | |
|
Introduction
|
|
01:06 | |
|
Clojure Objectives
|
|
01:06 | |
|
Why Another Lisp?
|
|
01:29 | |
|
Why ClojureScript?
|
|
00:41 | |
|
Clojure and ClojureScript
|
|
00:34 | |
|
Demo: Evaluation and the REPL
|
|
02:24 | |
|
Traditional Evaluation
|
|
00:42 | |
|
Clojure Evaluation
|
|
00:55 | |
|
Operation Forms
|
|
00:53 | |
|
Structure vs. Semantics
|
|
00:48 | |
|
Literals
|
|
01:21 | |
|
Data Structures
|
|
01:36 | |
|
Metadata
|
|
00:54 | |
|
Reader Macros
|
|
01:41 | |
|
Demo: REPL Utilities
|
|
03:43 | |
|
Leiningen Directory Structure
|
|
01:02 | |
|
Maven Directory Structure
|
|
00:32 | |
|
Summary
|
|
01:12 | |
Functions |
|
00:38:55 | |
|
Introduction
|
|
01:26 | |
|
Functions
|
|
01:40 | |
|
Invoking Functions
|
|
00:55 | |
|
Naming Functions
|
|
02:19 | |
|
Demo: Defining and Naming Functions
|
|
05:15 | |
|
let
|
|
01:46 | |
|
Demo: let
|
|
01:26 | |
|
Multiple Arity
|
|
01:46 | |
|
Demo: Multiple Arity
|
|
02:03 | |
|
Variadic Functions
|
|
02:09 | |
|
apply
|
|
02:23 | |
|
Demo: Variadic Functions and apply
|
|
03:49 | |
|
Closures
|
|
01:37 | |
|
Invoking Java Code
|
|
02:11 | |
|
Chaining Access
|
|
01:24 | |
|
Java Methods vs. Functions
|
|
01:20 | |
|
Terse fn Reader Macro
|
|
01:10 | |
|
Summary
|
|
04:16 | |
Namespaces |
|
00:34:59 | |
|
Introduction
|
|
00:41 | |
|
Why Namespaces?
|
|
01:37 | |
|
What's in a Namespace?
|
|
00:31 | |
|
Namespace-Qualified Vars
|
|
00:53 | |
|
Namespace-Qualified Keywords
|
|
01:24 | |
|
Namespaces in the REPL
|
|
00:52 | |
|
Namespace Operations
|
|
01:02 | |
|
require
|
|
02:19 | |
|
Demo: require
|
|
02:40 | |
|
use
|
|
02:27 | |
|
Demo: use
|
|
06:40 | |
|
Reloading Namespaces
|
|
00:50 | |
|
import
|
|
00:46 | |
|
Namespaces and Files
|
|
00:45 | |
|
ns Declaration
|
|
00:47 | |
|
ns :require
|
|
00:55 | |
|
ns :use
|
|
00:34 | |
|
ns :import
|
|
00:28 | |
|
ns Complete Example
|
|
00:19 | |
|
Demo: ns macro
|
|
05:12 | |
|
Private Vars
|
|
00:44 | |
|
the-ns
|
|
00:30 | |
|
Namespace Introspection
|
|
00:31 | |
|
Summary
|
|
01:32 | |
Collections |
|
00:27:23 | |
|
Introduction
|
|
01:05 | |
|
Working With Data
|
|
00:40 | |
|
Immutability
|
|
00:37 | |
|
Persistent Data Structures
|
|
01:56 | |
|
Clojure Collections
|
|
00:34 | |
|
Lists
|
|
01:50 | |
|
Vectors
|
|
01:36 | |
|
Demo: Lists and Vectors
|
|
05:09 | |
|
Maps
|
|
02:56 | |
|
Nested Map Access
|
|
02:18 | |
|
Demo: Maps
|
|
05:59 | |
|
Sets
|
|
01:36 | |
|
Summary
|
|
01:07 | |
Destructuring |
|
00:18:52 | |
|
Introduction
|
|
00:38 | |
|
Destructuring
|
|
00:45 | |
|
Sequential Destructuring
|
|
01:10 | |
|
Sequential Destructuring with &
|
|
00:54 | |
|
Ignoring Destructured Values with _
|
|
00:42 | |
|
Demo: Sequential Destructuring
|
|
04:47 | |
|
Associative Destructuring
|
|
01:04 | |
|
Associative Destructuring with :keys
|
|
01:00 | |
|
Using :or for Default Values
|
|
00:47 | |
|
Named Arguments
|
|
00:45 | |
|
Demo: Associative Destructuring
|
|
05:09 | |
|
Summary
|
|
01:11 | |
Sequences |
|
00:17:37 | |
|
Introduction
|
|
00:31 | |
|
Sequences
|
|
00:23 | |
|
Sequence API
|
|
00:55 | |
|
Demo: Sequence API
|
|
01:54 | |
|
Sequences Over Structures
|
|
01:21 | |
|
Sequences Over Functions
|
|
01:09 | |
|
Sequences in the REPL
|
|
00:35 | |
|
Sequence Library
|
|
00:53 | |
|
Creating a Sequence
|
|
01:05 | |
|
Seq In, Seq Out
|
|
01:25 | |
|
Using a Seq
|
|
01:41 | |
|
Demo: Working with Sequences
|
|
03:51 | |
|
Adopting the Sequence Mindset
|
|
00:49 | |
|
Summary
|
|
01:05 | |
Flow Control |
|
00:28:08 | |
|
Introduction
|
|
00:24 | |
|
Statements vs. Expressions
|
|
01:16 | |
|
Flow Control Expressions
|
|
00:33 | |
|
Truthiness
|
|
01:53 | |
|
if
|
|
00:42 | |
|
if/do
|
|
00:37 | |
|
if-let
|
|
00:54 | |
|
Demo: if-let
|
|
03:54 | |
|
cond
|
|
01:30 | |
|
condp
|
|
00:54 | |
|
case
|
|
00:46 | |
|
Demo: cond/condp/case
|
|
03:32 | |
|
Recursion and Iteration
|
|
00:33 | |
|
doseq
|
|
01:17 | |
|
dotimes
|
|
00:37 | |
|
while
|
|
00:20 | |
|
for
|
|
00:28 | |
|
loop
|
|
00:59 | |
|
defn/recur
|
|
00:28 | |
|
recur for Recursion
|
|
00:43 | |
|
Demo: recur
|
|
02:08 | |
|
Exception Handling
|
|
00:55 | |
|
Throwing Exceptions
|
|
00:30 | |
|
with-open
|
|
00:36 | |
|
Summary
|
|
01:39 |
Overview and the REPL