@@ -37,17 +37,17 @@ Toolbox > swiss army knife
37
37
multiple)
38
38
- open structures as maps of interned strings (closed struct available)
39
39
* Practical SMP primitives
40
- - thread local mutations of /vars/
41
- - queued asynch mutations on /agents/
42
- - atomics mutations
43
- - single /atoms/
40
+ - vars :: thread local writes
41
+ - agents :: queued asynch writes
42
+ - inter-threads synch :: atomic writes
43
+ - on single /atoms/
44
44
- transactions on multiple /refs/
45
45
* Very Simple Syntax ☺
46
46
"Oh, btw, it's a LISP"
47
47
[[file:lisp-angry-meme.png]]
48
48
* Don't panic !
49
49
Not necessarily /easy/ at first but :
50
- - syntactic grouping of pairs
50
+ - syntactic grouping of pairs without ()
51
51
- code is data (list), but most data structures are not lists :
52
52
- [vector]
53
53
- {map}
@@ -66,10 +66,11 @@ Not necessarily /easy/ at first but :
66
66
- Myself :: "Any boring (part of a) task can and should be automated away"
67
67
- Myself again :: "Programming should be fun !"
68
68
69
- Hence you should be able to automate programming !
69
+ Hence you should be able to automate boring parts of programming !
70
70
To make it /easy/, you *need* the /simple/ syntax of code as data structure.
71
- (disclosure: I'm a Boost::mpl user)
72
- [Macronomicon by M.Fogus]
71
+ (disclosure: I'm a [[http://www.boost.org/doc/libs/1_49_0/libs/mpl/doc/index.html][Boost::mpl]] user !)
72
+ [ [[http://blog.fogus.me/2011/11/15/the-macronomicon-slides/][Macronomicon by M.Fogus]]]
73
+
73
74
74
75
* Conclusion
75
76
Perfect Plateform for :
@@ -86,16 +87,53 @@ better understanding of concepts you already (think you) know
86
87
- Don't fear/dismiss the unknown
87
88
- Learn things and have fun ! (I know you will ☺)
88
89
90
+ "+others will never resolve on passing higher order functions in
91
+ forests of parenthesis+" ☹
92
+
93
+
94
+ I avoided LISP for 10 years :
95
+ "I was blind, now I can see.
96
+ Rich made a believer out of me !" ☺
97
+
89
98
* [Web|Bib]liography
90
99
91
100
- Talks (slides / videos)
92
- - Are We There Yet ?
93
- - Hammock Driven Development
94
- - Simple Ain't Easy
101
+ - Are We There Yet ? *← Must See !*
102
+ - [[http://www.wiki.jvmlangsummit.com/images/a/ab/HickeyJVMSummit2009.pdf][slides]]
103
+ - [[http://www.infoq.com/presentations/Are-We-There-Yet-Rich-Hickey][video]]
104
+ - [[https://blip.tv/clojure/hammock-driven-development-4475586][Hammock Driven Development]]
105
+ - [[http://www.infoq.com/presentations/Simple-Made-Easy][Simple Made Easy]]
95
106
- …
96
107
- Books
97
- - The Joy of Clojure
98
- - Clojure in Action
99
- - Programming Clojure $2^{nd}$ ed.
108
+ - [[http://joyofclojure.com/][ The Joy of Clojure]]
109
+ - [[http://www.manning.com/rathore/][ Clojure in Action]]
110
+ - [[http://www.clojurebook.com/][ Clojure Programming]]
100
111
- …
112
+ * Bonus track : snippets
113
+ #+begin_src clojure export: code
114
+ (def fizzbuzz
115
+ "lazy seq of fizzbuzz"
116
+ (lazy-seq (map #(let [s (str (if (= 0 (rem % 3)) "Fizz")
117
+ (if (= 0 (rem % 5)) "Buzz"))]
118
+ (if (empty? s) % s))
119
+ (iterate inc 1))))
120
+ #+end_src
121
+ - user> (take 16 fizzbuzz) :: (1 2 "Fizz" 4 "Buzz" "Fizz" 7 8 "Fizz"
122
+ "Buzz" 11 "Fizz" 13 14 "FizzBuzz" 16)
123
+ #+begin_src clojure export: code
124
+ (def fib-seq
125
+ "lazy seq of Fibonacci numbers"
126
+ (lazy-cat [0 1] (map + (rest fib-seq) fib-seq)))
127
+ #+end_src
128
+ - user> (take 16 fib-seq) :: (0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610)
129
+
130
+ * TODO Hands-on !
131
+ - [[http://tryclj.com/][try clojure !]]
132
+ - [[https://gist.github.com/1951396][code snippets]]
133
+ - [[http://www.cljbin.com/paste/4f564497e4b00708a069359e][fibonacci seq 1]]
134
+ - [[http://www.cljbin.com/paste/4f5644e4e4b00708a069359f][fibonacci seq 2]]
135
+ - [[http://www.cljbin.com/paste/4f564571e4b00708a06935a0][fizzbuzz]]
136
+ - [[http://www.cljbin.com/paste/4f564644e4b00708a06935a1][fizzbuzzzapp]]
137
+ - [[http://www.cljbin.com/paste/4f564754e4b00708a06935a3][menu]]
101
138
139
+ Remember : a proper IDE will help *a lot* you with the () !
0 commit comments