Skip to content

Instantly share code, notes, and snippets.

@humorless
Last active June 18, 2021 05:38
Show Gist options
  • Save humorless/3bf4cab1024d2bebb1f65ce9dfca2dd2 to your computer and use it in GitHub Desktop.
Save humorless/3bf4cab1024d2bebb1f65ce9dfca2dd2 to your computer and use it in GitHub Desktop.
The checklist of Clojure beginner learning points
  • editor integration
  1. repl-driven development: evaluation & reload & documentation (Evaluation)
  2. syntax highlight & rainbow parentheses (Readability)
  3. formatter: cljfmt for clj/cljs (Formatting)
  4. linter: clj-kondo (Lint)
  5. s-expression editing: slurp, barf, delete surrounding parentheses, etc. (Editing)
  6. search function references: clojure-lsp (Navigation)
  7. search string in current directory: ack.vim (Navigation)
  8. pprint & data visualization: pprint, inspector (Data Visualization)
  • concepts
  1. immutability
  2. pure function & dependency injection
  3. constraints instead of types
  4. sequence abstraction & colleciton abstraction
  5. lazy evaluation & gotcha
  • programming tactics
  1. naming
  2. effective recursion
  3. multiple ways to do one thing: different level of complexity
  4. 8 important combinators
  5. recursion & lazy-seq/lazy-cat
  6. mapcat
  7. postwalk
  8. Three aspects of inteoperation: java, javascript, react
  • mist
  1. debug with scientific method
  2. object API/http API/queue/log
  3. modeling nil semantic in code and in database
@humorless
Copy link
Author

Part 1 - Basic

  1. 基本語法:整數、字串、邏輯真假、未定義空值
  2. 資料集合: list, vector, map, set, tree
  3. 條件語法:if / when / case/ cond / defmulti
  4. 定義函數
  5. 迴圈或是遞迴: loop / recursive
  6. 區域變數、全域變數
  7. FP - map/filter/reduce

Part 2 - Powerful Modeling Skills

  1. Advanced FP -
    mapcat/ postwalk/ group-by/ interpose /interleave /frequency
  2. Advanced FP - Combinators
  3. lazy-seq/ recur
  4. clojure spec / design by contract
  5. How to model nil semantic?

Part 3 - Concurrency / Java/ Performance

  1. atom/ var / REPL friendly design
  2. future/ pmap / delay
  3. java interoperation / reify / reflection
  4. macro / with-redefs / with-out-str /doto
  5. transducer / reducible

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment