Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Introduction à Clojure
Search
Pablo Tamarit
October 30, 2012
Programming
98
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
92
Introduction to Clojure
ptamarit
0
82
Other Decks in Programming
See All in Programming
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
150
アクセシビリティから考える情報設計
high_g_engineer
0
380
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
150
Heart of Swift Concurrency
koher
0
910
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
0
1.5k
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
4
2.7k
AIは賢い。でも実行環境は? CLIおじさんがAI時代に伝えたいこと ~ CLIおじさんがAI時代に伝えたいこと ~
curekoshimizu
1
250
スマート反転とウェブアクセシビリティ
camiha
0
210
cdk deploy JawsSonic #MARATHONしながらAWSリソースをデプロイしてみよう
akihisaikeda
2
140
すこし踏み込む CancellationToken
htkym
2
580
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
160
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
4.8k
Featured
See All Featured
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
410
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
530
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
How to build a perfect <img>
jonoalderson
1
6k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
520
The agentic SEO stack - context over prompts
schlessera
0
940
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
290
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
280
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Scaling GitHub
holman
464
140k
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)