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 

Documents pareils