Личный взгляд на Clojure
-
Upload
ivan-grishaev -
Category
Education
-
view
178 -
download
0
Transcript of Личный взгляд на Clojure
Срыв покровов
— Это не тот Common Lisp
— Разница культур
— Это очень мощный и выразительный язык...
— ...подкрепленный Лиспом
— Скобочки не только круглые )))
ClojureScript
— Компилируется в JS
— Модульность, неймспейсы, макросы
— Повторное использование кода Clojure
— Om — биндинг к React
Свобода действий
— Макросы
— свой DSL, например, ORM
— работа с деревьями (XML, HTML)
— многопоточность
Еще о макросах
(/ (* 2 (+ 2 3)) 100)(expr (2 + 3) * 2 / 100)
(for [item some-seq] (* item 2))
(-> initial func1 func2 func3)
Гомогенность
— Ring — призводительный веб-фреймворк
— приложение это функция (app request)
— добавили роутинг — получили функцию
— добавили мидлварь — получили функцию
— и тд.
Разве можно ничего не менять?(defn wrap-user [view] (fn [request] (view (assoc request :user (when-let [user-id (-> request :session :user-id)] (get-user-by-id user-id))))))
(def app (-> app-routes auth/wrap-user))
Не надо про скобочки!
— Они теперь разные
(function($){$('.foo').click(function() {alert(123);})})(jQuery); — 18 шт
Лисп упрощает сам себя
(get (get (get response :data) :user) :name)
(getin response [:data :user :name])
(-> response :data :user :name)
Pros
— библиотеки
— простота
— uberjar: деплой, дистрибуция, кроссплатформенность
— свобода
— производительность
— Google for "awesome-clojure"
Cons
— непривычно!
— для серьезной разработки нужен Емакс
— (пока еще) мало вакансий
— ограничения Java-платформы