ƒfunctional·fluency
·home·concept map

── clojure· the language

AClojure basics0/11
  • Lisp syntax and homoiconicity
  • REPL-driven development
  • Namespaces and requires
  • Persistent data structures
  • The seq abstraction
  • Destructuring
  • Threading macros
  • Flow control: if, when, cond, case
  • nil, truthy values, and nil-punning
  • Equality and identity
  • Recursion and recur
BClojure advanced0/10
  • Macros
  • Protocols and multimethods
  • Transducers
  • State: atoms, refs, agents
  • Software Transactional Memory
  • Dynamic vars and binding
  • Futures, promises, and delay
  • core.async channels
  • clojure.spec
  • Type hints and performance
CClojure ecosystem0/12
  • Data-oriented programming
  • clojure.test and test runners
  • Web stack: Ring and Reitit
  • Component, Mount, Integrant
  • ClojureScript
  • Babashka scripting
  • core.logic and logic programming
  • Datalog queries
  • Malli schemas
  • Generative testing with test.check
  • Gradual typing with core.typed
  • JVM interop from Clojure

── functional programming· the discipline

DFP foundations0/7
  • Imperative vs declarative
  • First-class functions
  • Immutability
  • Purity vs side effects
  • Composition and point-free style
  • Closures and memoization
  • Lazy evaluation
EDeep theory0/13
  • Lambda calculus
  • SKI combinators
  • Evaluation strategies
  • Hindley-Milner type inference
  • Curry-Howard correspondence
  • Type systems: System F, dependent, linear
  • Polymorphism taxonomy
  • The algebraic hierarchy
  • Monad transformers, Free, Tagless final
  • Algebraic effects and handlers
  • Continuations and CPS
  • Lenses and optics
  • Recursion schemes
FConcurrency models0/5
  • CSP vs the actor model
  • π-calculus
  • CRDTs
  • Event sourcing
  • Functional reactive programming
GNeighboring paradigms0/6
  • Array programming (APL / J)
  • Parser combinators
  • Automatic differentiation
  • Probabilistic programming
  • Term rewriting
  • Proof assistants: Agda, Idris, Lean
HApplied patterns0/5
  • Refactoring imperative to functional
  • Functional core, imperative shell
  • Railway-oriented programming
  • Make illegal states unrepresentable
  • The expression problem
ƒfunctional·fluency
concept map

~ / track B

B

Clojure advanced

Macros, protocols, transducers, state, STM, core.async, dynamic vars, futures/promises, spec, performance hints.

$ topics(10)

  1. 01MacrosAdvanced→
  2. 02Protocols and multimethodsAdvanced→
  3. 03TransducersAdvanced→
  4. 04State: atoms, refs, agentsAdvanced→
  5. 05Software Transactional MemoryAdvanced→
  6. 06Dynamic vars and bindingAdvanced→
  7. 07Futures, promises, and delayIntermediate→
  8. 08core.async channelsAdvanced→
  9. 09clojure.specIntermediate→
  10. 10Type hints and performanceAdvanced→
ƒ functional · fluency — study FP with Clojure in your browser