Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Introduction à Clojure
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Pablo Tamarit
October 30, 2012
Programming
97
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Introduction à Clojure
Pablo Tamarit
October 30, 2012
More Decks by Pablo Tamarit
See All by Pablo Tamarit
From Bash to Z shell in 5 min
ptamarit
1
91
Introduction to Clojure
ptamarit
0
81
Other Decks in Programming
See All in Programming
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
190
CSC307 Lecture 17
javiergs
PRO
0
320
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
190
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
250
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
740
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
220
Webフレームワークの ベンチマークについて
yusukebe
0
160
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
130
dRuby over BLE
makicamel
2
330
Claspは野良GASの夢をみるか
takter00
0
190
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
240
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2.1k
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
WCS-LA-2024
lcolladotor
0
630
Designing Experiences People Love
moore
143
24k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
780
Everyday Curiosity
cassininazir
0
230
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.6k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
Unsuck your backbone
ammeep
672
58k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Transcript
Introduction à Clojure Pablo Tamarit 30 octobre 2012 GenevaJUG
? 2000 2001 2002 2003 2004 2005 2006 2007 2008
2009 2010 2011 2012 1999 - 2005 EIG 2007 - 2049 CERN
(def panier [{:nom "pommes", :type :fruits} {:nom "poires", :type :fruits}
{:nom "scoubidous", :type :objets}]) (group-by :type panier) {:fruits [{:type :fruits, :nom "pommes"} {:type :fruits, :nom "poires"}], :objets [{:type :objets, :nom "scoubidous"}]} Avant-goût
• Partie philosophique • Partie théorique • Partie pratique
Partie philosophique
Clojure • Créé en 2007 • Simplicité • Pas d’orienté
objet! • Typage dynamique • Tout est immutable • Pas d'état • Pas d'effets de bord • Dialecte de Lisp! + λ
Lisp • Inventé en 1958
John McCarthy 1927 – 2011
Lisp • Inventé en 1958 • Lots of Irritating Superfluous
Parentheses?
Lisp • Inventé en 1958 • Lots of Irritating Superfluous
Parentheses • Homoiconicité • Macros paulgraham.com/avg.html
Partie théorique
Langage • Syntaxe simple, vocabulaire riche. – Syntaxe: données, fonctions
– Vocabulaire: fonctions clojure.org/cheatsheet
Syntaxe: collections Liste ("un" 2 3 3) Vecteur ["un" 2
3 3] Set #{"un" 2 3} Map {:nom "Pablo", :age 28} (:age {:nom "Pablo", :age 28}) 28
Syntaxe: fonctions Appel (+ 1 2 3) Définition (defn abs
[n] (if (neg? n) (- n) n)) Définition anonyme (fn [x y] (+ (abs x) (abs y))) Définition anonyme sucrée #(+ (abs %1) (abs %2)) condition then else vecteur liste fn args
Vocabulaire: fonctions (def coll [-42 5 -0.1]) (map abs coll)
(42 5 0.1) (reduce + 0 coll) -37.1 (filter neg? coll) (-42 -0.1)
Interop Java Clojure new JFrame("Titre") (JFrame. "Titre") Color.RED Color/RED frame.setTitle("Titre2")
(.setTitle frame "Titre2") frame.getTitle().toLowerCase() (.. frame getTitle toLowerCase) frame.add(panel) frame.pack() frame.setVisible(true) (doto frame (.add panel) (.pack) (.setVisible true)) 2 4 1 3
Partie pratique
Quoi installer? • Rien! <dependency> <groupId>org.clojure</groupId> <artifactId>clojure</artifactId> <version>1.4.0</version> </dependency> •
Qui a-t-il dans le JAR? – La librairie – REPL: java -jar clojure.jar – Compilateur: .clj .class
Outils • Build – leiningen – clojure-maven-plugin • IDE –
Counterclockwise (Eclipse) – La Clojure (IntelliJ IDEA) – Emacs!
Apprentissage • Présentations: – blip.tv/clojure – infoq.com/clojure • Livres: –
clojurebook.com – joyofclojure.com • Exercices: – 4clojure.com
Questions?
Crédits graphiques • Logo Clojure: © Tom Hickey (tomhickey.com) •
Vue aérienne du LHC: © 2001 CERN (cdsweb.cern.ch/record/42370) • La Trahison des images: © 1929 René Magritte • Duke models: © Sun Microsystems Inc. (duke.kenai.com/models) • Portrait de John McCarthy: © 2006 null0 (flic.kr/p/q39Sg) • L'Appel des cimes: © 1942 René Magritte • La Clairvoyance: © 1936 René Magritte • Cooled Beans: © 2008 Chris Bay (flic.kr/p/4z6CBA) • Gears: © Dima Yagnyuk (thenounproject.com/noun/gears/#icon- No2174, thenounproject.com/Deadtype) • Tools: © Jacob Hardbower (thenounproject.com/noun/tools/#icon- No4684, thenounproject.com/HeartWired)