Slide 1

Slide 1 text

"Simple Made Easy" Made Easy "Simple Made Easy" Made Easy Clojure Clojure

Slide 2

Slide 2 text

lagénorhynque lagénorhynque (defprofile lagénorhynque :id @lagenorhynque :reading "/laʒenɔʁɛ̃ k/" :aliases [" "] :languages [Clojure Haskell English français] :interests [programming language-learning law mathematics] :commits ["github.com/lagenorhynque/duct.module.pedestal"] :contributes ["github.com/japan-clojurians/clojure-site-ja"])

Slide 3

Slide 3 text

Clojure Clojure (*> ᴗ •*) (*> ᴗ •*) clojure tips ? 7 7

Slide 4

Slide 4 text

1. "simple" "easy" 2. Simple Made Easy 3. "simple" "easy" 4. "simple" "easy" 5. "simple" 6. "simple" 7. Clojure "simple"

Slide 5

Slide 5 text

"simple" "easy" "simple" "easy"

Slide 6

Slide 6 text

Clojure "simple" Clojure "simple" "easy" Clojure "simple"

Slide 7

Slide 7 text

Simple Made Easy Simple Made Easy

Slide 8

Slide 8 text

( ( ) ) Clojure "simple" ( Clojurian ) cf. ( ) Simple Made Easy Simple Made Easy Strange Loop 2011 Strange Loop 2011 Rich Hickey Simplicity Matters Rails Conf 2012 | eed3si9n

Slide 9

Slide 9 text

"Simple Made Easy" "Simple Made Easy" simple "simple" "easy" "simple" "easy" ? Word Power Made Easy

Slide 10

Slide 10 text

"simple" "easy" "simple" "easy"

Slide 11

Slide 11 text

"simple" "simple" < simplex (= sim­ + plex) simplex : / : (= com­ + plex) : simple complex

Slide 12

Slide 12 text

"easy" "easy" (= + ­y) < aise/eise < adjacens adjacens (cf. adjacent) : ( ) ( ) ( ) / : : easy easy ease hard

Slide 13

Slide 13 text

"simple" "easy" "simple" "easy"

Slide 14

Slide 14 text

"simple" "easy" "simple" "easy" simple/complex, easy/hard 2 easy simple ! complex simple Rich Hickey simple or complex simple or easy

Slide 15

Slide 15 text

"easy but complex" vs "simple but hard" "easy but complex" vs "simple but hard" easy complex (= not simple) easy complex complex simple hard (= not easy) hard simple simple

Slide 16

Slide 16 text

"simple" "simple"

Slide 17

Slide 17 text

(complexity)

Slide 18

Slide 18 text

"simple" "simple" "simple" /

Slide 19

Slide 19 text

"simple" "simple"

Slide 20

Slide 20 text

"simple" "complex" ( ) "simple" (abstract) (draw away) who, what, when, where, why, how "simple" (simplify) complect abstract

Slide 21

Slide 21 text

Clojure "simple" Clojure "simple"

Slide 22

Slide 22 text

;; Common Lisp: "complect" (defun fizzbuzz (n) (let ((fizzp (zerop (mod n 3))) (buzzp (zerop (mod n 5)))) (cond ((and fizzp buzzp) "Fizz Buzz") (buzzp "Buzz") (fizzp "Fizz") (t n)))) ;; Clojure: "simple" (defn fizzbuzz [n] (let [fizz? (zero? (mod n 3)) buzz? (zero? (mod n 5))] (cond (and fizz? buzz?) "Fizz Buzz" buzz? "Buzz" fizz? "Fizz" :else n)))

Slide 23

Slide 23 text

"complect" ( ) "simple"

Slide 24

Slide 24 text

"complect" atom, ref, agent "simple"

Slide 25

Slide 25 text

"complect" who ( ) what ( ) "complect" "simple"

Slide 26

Slide 26 text

what ( ) who ( ) "complect" "simple" e.g. core.async

Slide 27

Slide 27 text

"simple" "simple" Simple Made Easy / ! Clojure !

Slide 28

Slide 28 text

Further Reading Further Reading Simple Made Easy matthiasn/talk-transcripts > Hickey_Rich/SimpleMadeEasy.md Clojure Simple Made Easy - Simplicity Matters | eed3si9n Clojure Design Decisions Clojure - Clojure core.async Channels