1
1
#+TITLE: Pourquoi Clojure ?
2
2
#+AUTHOR:
3
+ #+DATE: <2012-02-29 Wed 19:30>
3
4
#+OPTIONS: toc:nil
4
5
* Hypothèse de Sapir Whorf
5
6
(Encore) un langage de plus ?
@@ -32,7 +33,7 @@ Clojure a *tout* cela, /à la carte/.
32
33
33
34
Boîte à outils > couteau suisse
34
35
* Comportements par défaut pertinents
35
- - immutabilité : Programmatio Orientée Valeur (transients disponibles
36
+ - immutabilité : Programmation Orientée Valeur (transients disponibles
36
37
mais les structures de données persistantes sont extrêmement efficaces)
37
38
- typage dynamique (possibilité d'annotation de type)
38
39
- binding lexical (binding dynamic disponible)
@@ -48,7 +49,7 @@ Boîte à outils > couteau suisse
48
49
- dans des transactions sur de multiples /refs/
49
50
* Une syntaxe très simple ☺
50
51
"Au fait, c'est un LISP"
51
- [[file:~/Code/repositories/clj-pres/4clojure-oriented-prez/src/ lisp-angry-meme.png]]
52
+ [[file:lisp-angry-meme.png]]
52
53
* Ne paniquez pas !
53
54
Pas forcément /facile/ au premier abord, mais :
54
55
- pas de () pour les paires lorsque la syntaxe le permet
@@ -74,8 +75,9 @@ Pas forcément /facile/ au premier abord, mais :
74
75
Donc on devrait être capable d'automatiser de la programmation !
75
76
Pour que ce soit /facile/, il *faut* la /simplicité/ syntaxique du
76
77
code comme structure de données (et je suis un utilisateur de
77
- Boost::mpl !).
78
- [Macronomicon by M.Fogus]
78
+ [[http://www.boost.org/doc/libs/1_49_0/libs/mpl/doc/index.html][Boost::mpl]] !).
79
+
80
+ [ [[http://blog.fogus.me/2011/11/15/the-macronomicon-slides/][Macronomicon by M.Fogus]]]
79
81
80
82
* Conclusion
81
83
Plateforme parfaite pour :
@@ -102,17 +104,35 @@ J'ai évité les LISP pendant 10 ans :
102
104
Rich made a believer out of me !" ☺
103
105
104
106
105
-
106
107
* [Web|Bib]liographie
107
108
108
109
- Présentations (slides / vidéos)
109
- - Are We There Yet ?
110
- - Hammock Driven Development
111
- - Simple Ain't Easy
110
+ - Are We There Yet ? *← indispensable !*
111
+ - [[http://www.wiki.jvmlangsummit.com/images/a/ab/HickeyJVMSummit2009.pdf][slides]]
112
+ - [[http://www.infoq.com/presentations/Are-We-There-Yet-Rich-Hickey][video]]
113
+ - [[https://blip.tv/clojure/hammock-driven-development-4475586][Hammock Driven Development]]
114
+ - [[http://www.infoq.com/presentations/Simple-Made-Easy][Simple Made Easy]]
112
115
- …
113
116
- Livres
114
- - The Joy of Clojure
115
- - Clojure in Action
116
- - Programming Clojure 2^{nd} ed.
117
+ - [[http://joyofclojure.com/][ The Joy of Clojure]]
118
+ - [[http://www.manning.com/rathore/][ Clojure in Action]]
119
+ - [[http://www.clojurebook.com/][ Clojure Programming]]
117
120
- …
118
121
122
+ * Bonus track : snippets
123
+ #+begin_src clojure export: code
124
+ (def fizzbuzz
125
+ "lazy seq of fizzbuzz"
126
+ (lazy-seq (map #(let [s (str (if (= 0 (rem % 3)) "Fizz")
127
+ (if (= 0 (rem % 5)) "Buzz"))]
128
+ (if (empty? s) % s))
129
+ (iterate inc 1))))
130
+ #+end_src
131
+ - user> (take 16 fizzbuzz) :: (1 2 "Fizz" 4 "Buzz" "Fizz" 7 8 "Fizz"
132
+ "Buzz" 11 "Fizz" 13 14 "FizzBuzz" 16)
133
+ #+begin_src clojure export: code
134
+ (def fib-seq
135
+ "lazy seq of Fibonacci numbers"
136
+ (lazy-cat [0 1] (map + (rest fib-seq) fib-seq)))
137
+ #+end_src
138
+ - user> (take 16 fib-seq) :: (0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610)
0 commit comments