Clojure - Indico LAL
Transcription
Clojure - Indico LAL
Clojure Charles LOOMIS 18 décembre 2013 Clojure = Lisp • Une version du Lisp qui repose sur… – JVM : hFp://clojure.org – JS : hFps://github.com/clojure/clojurescript – CLR : hFps://github.com/clojure/clojure-‐clr – Python : hFps://github.com/halgari/clojure-‐py – … • FoncPonnelle, dynamique, typage implicite, … Syntaxe • Cœur du syntaxe : appel une foncPon (neg?(* (- 5 10) 2))! • Ajoutes dans clojure : – structure : (-‐> …), (-‐>> …) – vectors : [ a1 a2 a3 ] – maps : { k1 v1, k2 v2 } – sets : #{ v1 v2 } – regex : #”^\w*$” FoncPonnalités • AbstracPons et foncPons de haute niveau – Séquences : map, reduce, … • ProgrammaPon mulP-‐threadé « facile » – « Persistent Data Structures » : immutable – Futures, promises, … – « Sohware TransacPonal Memory » – « Transients » : mutable mais avec visibilité limitée • Macros • … « BaFeries Included » • Une riche bibliothèque « core » – Données : JSON, XML, zippers, … – Processus : core.async, reducers, … • Bibliothèques communautaires – Ring : créer des applicaPons web – Compojure : dispatcher les URLs REST – bases de données : JDBC, Couchbase, … • Bibliothèques naPves : Java, … OuPllage • REPL : « read evaluate print loop » – Environnement complètement interacPf – PermeFre le développement rapide des foncPons et des tests • Les IDEs, editeurs, etc. – Le point faible dans l’eco-‐système, mais ils améliorent – REPL intégré, syntax highlighPng, structural ediPng, refactoring, … – emacs, Eclipse (counterclockwise), IntelliJ (cursive) Plus des informaPons • DocumentaPons – Cheetsheet : hFp://clojure.org/cheatsheet – Nutshell : “Clojure Programming” • Sites web – TryCLJ : hFp://tryclj.com – 4clojure : hFp://www.4clojure.com