Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Open your Clojure 
https://www.dropbox.com/s/5ge6ppbcgchc02v/clojure-nick.pdf 
Николай Линкер
Clojure -это 
•Лисп 
•Динамический строго типизированный 
•Функциональный 
•Под JVM 
•Тёплое ламповое коммьюнити
Самый быстрый способ погружения
О, б-жечки, скобки!
Мы –рабы привычек 
•Обычные калькулятры 
•МК-61
Но мы можем выработать новые привычки! 
•Java 
•!k, ++a, a++ 
•!a ? b + 1: b –1 
•new java.util.ArrayList(10) 
•Math.pow(2, 10) 
•“hello”.substring(1, 3) 
•Integer.MAX_VALUE 
•obj.field 
•alist instanceof java.util.List 
•Clojure 
•(not k), (inc a), … 
•(if (not a) (inc b) (dec b)) 
•(new java.util.ArrayList 10) 
•(Math/pow 2 10) 
•(.substring “hello” 1 3) 
•Integer/MAX_VALUE 
•(.field obj) 
•(instance? java .util.List alist)
Гармония, как она есть 
(+ 2 3) 
Это просто список 
Сначала вычисляются аргументы 
Затем сама операция
Code = data = code 
•Код = абстрактное синтаксическое деревонепревзойдённая лёгкость оперирования с самой программой
Динамический строго типизированный 
(count [1 2 3]) 
(count {:a 1 :b 2 :c 3}) 
(count #{1 2 3}) 
(count ‘(1 2 3)) 
(:a {:a 1 :b 2 :c 3}) ; => 1 
({:a 1 :b 2 :c 3} :c) ; => 3
REPLAndroid users: https://play.google.com/store/apps/details?id=com.sattvik.clojure_replУмная командная строка + поддержка IDE
Функциональный 
•Функции –главная движущая сила 
•Неизменяемые коллекции 
•Структуры данных объявляются, не присваиваются 
•Контролируемое изменение данных (atoms, STM)
Функциям здесь хорошо 
•(*42 42) 
•(fn [x] (* x x)) 
•((fn [x] (* x x)) 42) ; => выдаст число 
•(def sq (fn [x] (* x x))) 
•(defn sq [x] (* x x)) 
•#(* % %) ; лямбдочка, 1 параметр 
•#(* %1 %2) ; лямбдочка, 2 параметр
Изменение неизменяемого 
«изменение» списка 
«изменение» дерева
Atoms, Refs, Agents
Как выглядит программа на Clojure 
•Вначале идёт неймспейс 
•Потом декларация(-ии) require
Как выглядит программа на Clojure 
•Потом определяются функции, константы и может быть макросы
Тёплое ламповое коммьюнити 
•Замечательный доклад, программирование в реальном времениhttp://jokerconf.com/#ryzhikov 
•http://clojure.org 
•http://tryclj.org 
•Коммьюнити менее фрагментировано по сравнению со Scala
Have fan!
Спасибо

More Related Content

2014-11-01 03 Николай Линкер. Open your clojure