Skip to content

Latest commit

 

History

History
93 lines (70 loc) · 1.89 KB

outline.md

File metadata and controls

93 lines (70 loc) · 1.89 KB

The Simplicity of Clojure

Outline

Welcome

  • Agenda overview

Clojure Overview and REPL

  • Why Clojure?
  • REPL
  • Syntax
    • Literals (one slide)

Collections

  • Possible theme: board games - model this (or something else)
  • About
    • Immutability
    • Go under the hood with immutability -- how is it not a memory hog?
  • Types
    • Vectors
    • Lists
    • Maps - look at examples in Thinking in Data for this
    • Sets

Sequences

  • Sequence abstractions

Modeling

  • Model a Board Game exercise

Functions

  • Call a function
  • Let
  • Define a function
  • Higher order functions
    • map
    • reduce

Protocols

  • Show how you can add sequence abstractions

Flow Control (2 slides)

  • Truthiness
  • cond
  • if
  • loop
  • doseq

State

  • Vars
  • Atoms
  • Refs
  • Agents

Example projects

  • Example 1
  • Example 2

Bonus Material

Concurrency

  • Futures

Program Organization

  • Leiningen
  • Namespaces

References

Notes on themes

How is Clojure simple?

  • Syntax is small
  • Values instead of objects with state
  • Functions instead of methods to manipulate state
  • Managed refs instead of variables
  • Maps to represent data instead of special syntax/classes
    • Generic data processing
    • Data as data
  • Declarative instead of imperative

TODO Moved to: Issues

  • Research one project each that we can use to highlight/use for examples
  • DONE Start slides
  • DONE Create github repository
  • DONE - See Issues Create issues for TODOs in github