diff options
| author | Divay Prakash <divayprakash@users.noreply.github.com> | 2019-12-23 23:14:50 +0530 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-12-23 23:14:50 +0530 | 
| commit | 16dc074e39f5f996639f23f4d6812c211ae5d22d (patch) | |
| tree | 63be0d1a3885201f3d13f1dc00266fb719f304a7 /ru-ru/clojure-ru.html.markdown | |
| parent | ffd1fed725668b48ec8c11cbe419bd1e8d136ae3 (diff) | |
| parent | 1d5f3671ea4bc6d7a70c3026c1ae6857741c50a6 (diff) | |
Merge branch 'master' into master
Diffstat (limited to 'ru-ru/clojure-ru.html.markdown')
| -rw-r--r-- | ru-ru/clojure-ru.html.markdown | 52 | 
1 files changed, 26 insertions, 26 deletions
| diff --git a/ru-ru/clojure-ru.html.markdown b/ru-ru/clojure-ru.html.markdown index 356d1cc0..19233d23 100644 --- a/ru-ru/clojure-ru.html.markdown +++ b/ru-ru/clojure-ru.html.markdown @@ -8,9 +8,9 @@ translators:  lang: ru-ru  --- -Clojure, это представитель семейства Lisp-подобных языков, разработанный +Clojure — это представитель семейства Lisp-подобных языков, разработанный  для Java Virtual Machine. Язык идейно гораздо ближе к чистому -[функциональному программированию](https://ru.wikipedia.org/wiki/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5) чем его прародитель Common Lisp, но в то же время обладает набором инструментов для работы с состоянием, +[функциональному программированию](https://ru.wikipedia.org/wiki/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5), чем его прародитель Common Lisp, но в то же время обладает набором инструментов для работы с состоянием,  таких как [STM](https://ru.wikipedia.org/wiki/Software_transactional_memory).  Благодаря такому сочетанию технологий в одном языке, разработка программ, @@ -23,9 +23,9 @@ Clojure, это представитель семейства Lisp-подобн  ```clojure  ; Комментарии начинаются символом ";". -; Код на языке Clojure записывается в виде "форм", +; Код на языке Clojure записывается в виде «форм»,  ; которые представляют собой обычные списки элементов, разделенных пробелами, -; заключённые в круглые скобки +; заключённые в круглые скобки.  ;  ; Clojure Reader (инструмент языка, отвечающий за чтение исходного кода),  ; анализируя форму, предполагает, что первым элементом формы (т.е. списка) @@ -76,32 +76,32 @@ Clojure, это представитель семейства Lisp-подобн  '(+ 1 2) ; => (+ 1 2)  ; ("'", это краткая запись формы (quote (+ 1 2)) -; "Квотированный" список можно вычислить, передав его функции eval +; «Квотированный» список можно вычислить, передав его функции eval  (eval '(+ 1 2)) ; => 3  ; Коллекции и Последовательности  ;;;;;;;;;;;;;;;;;;; -; Списки (Lists) в clojure структурно представляют собой "связанные списки", +; Списки (Lists) в clojure структурно представляют собой «связанные списки»,  ; тогда как Векторы (Vectors), устроены как массивы.  ; Векторы и Списки тоже являются классами Java!  (class [1 2 3]); => clojure.lang.PersistentVector  (class '(1 2 3)); => clojure.lang.PersistentList -; Список может быть записан, как (1 2 3), но в этом случае +; Список может быть записан как (1 2 3), но в этом случае  ; он будет воспринят reader`ом, как вызов функции.  ; Есть два способа этого избежать:  ; '(1 2 3)     - квотирование,  ; (list 1 2 3) - явное конструирование списка с помощью функции list. -; "Коллекции", это некие наборы данных +; «Коллекции» — это некие наборы данных.  ; И списки, и векторы являются коллекциями:  (coll? '(1 2 3)) ; => true  (coll? [1 2 3]) ; => true -; "Последовательности" (seqs), это абстракция над наборами данных, +; «Последовательности» (seqs) — это абстракция над наборами данных,  ; элементы которых "упакованы" последовательно. -; Списки - последовательности, а вектора - нет. +; Списки — последовательности, а векторы — нет.  (seq? '(1 2 3)) ; => true  (seq? [1 2 3]) ; => false @@ -119,7 +119,7 @@ Clojure, это представитель семейства Lisp-подобн  ; Функция conj добавляет элемент в коллекцию  ; максимально эффективным для неё способом. -; Для списков эффективно добавление в начло, а для векторов - в конец. +; Для списков эффективно добавление в начло, а для векторов — в конец.  (conj [1 2 3] 4) ; => [1 2 3 4]  (conj '(1 2 3) 4) ; => (4 1 2 3) @@ -130,7 +130,7 @@ Clojure, это представитель семейства Lisp-подобн  (map inc [1 2 3]) ; => (2 3 4)  (filter even? [1 2 3]) ; => (2) -; reduce поможет "свернуть" коллекцию +; reduce поможет «свернуть» коллекцию  (reduce + [1 2 3 4])  ; = (+ (+ (+ 1 2) 3) 4)  ; => 10 @@ -144,12 +144,12 @@ Clojure, это представитель семейства Lisp-подобн  ;;;;;;;;;;;;;;;;;;;;;  ; Функция создается специальной формой fn. -; "Тело" функции может состоять из нескольких форм, +; «Тело» функции может состоять из нескольких форм,  ; но результатом вызова функции всегда будет результат вычисления  ; последней из них.  (fn [] "Hello World") ; => fn -; (Вызов функции требует "оборачивания" fn-формы в форму вызова) +; (Вызов функции требует «оборачивания» fn-формы в форму вызова)  ((fn [] "Hello World")) ; => "Hello World"  ; Назначить значению имя можно специальной формой def @@ -160,7 +160,7 @@ x ; => 1  (def hello-world (fn [] "Hello World"))  (hello-world) ; => "Hello World" -; Поскольку именование функций - очень частая операция, +; Поскольку именование функций — очень частая операция,  ; clojure позволяет, сделать это проще:  (defn hello-world [] "Hello World") @@ -211,7 +211,7 @@ x ; => 1  ; Отображения могут использовать в качестве ключей любые хэшируемые значения,  ; однако предпочтительными являются ключи, -; являющиеся "ключевыми словами" (keywords) +; являющиеся «ключевыми словами» (keywords)  (class :a) ; => clojure.lang.Keyword  (def stringmap {"a" 1, "b" 2, "c" 3}) @@ -263,7 +263,7 @@ keymap ; => {:a 1, :b 2, :c 3} - оригинал не был затронут  ; Исключаются - посредством disj  (disj #{1 2 3} 1) ; => #{2 3} -; Вызов множества, как функции, позволяет проверить +; Вызов множества как функции позволяет проверить  ; принадлежность элемента этому множеству:  (#{1 2 3} 1) ; => 1  (#{1 2 3} 4) ; => nil @@ -274,8 +274,8 @@ keymap ; => {:a 1, :b 2, :c 3} - оригинал не был затронут  ; Полезные формы  ;;;;;;;;;;;;;;;;; -; Конструкции ветвления в clojure, это обычные макросы -; и подобны их собратьям в других языках: +; Конструкции ветвления в clojure — это обычные макросы, +; они подобны своим собратьям в других языках:  (if false "a" "b") ; => "b"  (if false "a") ; => nil @@ -285,7 +285,7 @@ keymap ; => {:a 1, :b 2, :c 3} - оригинал не был затронут  (let [a 1 b 2]    (> a b)) ; => false -; Несколько форм можно объединить в одну форму посредством do +; Несколько форм можно объединить в одну форму посредством do.  ; Значением do-формы будет значение последней формы из списка вложенных в неё:  (do    (print "Hello") @@ -298,7 +298,7 @@ keymap ; => {:a 1, :b 2, :c 3} - оригинал не был затронут    (str "Hello " name))  (print-and-say-hello "Jeff") ;=> "Hello Jeff" (prints "Saying hello to Jeff") -; Ещё один пример - let: +; Ещё один пример — let:  (let [name "Urkel"]    (print "Saying hello to " name)    (str "Hello " name)) ; => "Hello Urkel" (prints "Saying hello to Urkel") @@ -306,7 +306,7 @@ keymap ; => {:a 1, :b 2, :c 3} - оригинал не был затронут  ; Модули  ;;;;;;;;; -; Форма "use" позволяет добавить в текущее пространство имен +; Форма use позволяет добавить в текущее пространство имен  ; все имена (вместе со значениями) из указанного модуля:  (use 'clojure.set) @@ -392,7 +392,7 @@ keymap ; => {:a 1, :b 2, :c 3} - оригинал не был затронут  my-atom  ;=> Atom<#...> (Возвращает объект типа Atom)  @my-atom ; => {:a 1 :b 2} -; Пример реализации счётчика на атоме +; Пример реализации счётчика на атоме:  (def counter (atom 0))  (defn inc-counter []    (swap! counter inc)) @@ -414,13 +414,13 @@ my-atom  ;=> Atom<#...> (Возвращает объект типа Atom)  Это руководство не претендует на полноту, но мы смеем надеяться, способно вызвать интерес к дальнейшему изучению языка. -Clojure.org - сайт содержит большое количество статей по языку: +Сайт Clojure.org содержит большое количество статей по языку:  [http://clojure.org/](http://clojure.org/) -Clojuredocs.org - сайт документации языка с примерами использования функций: +Clojuredocs.org — сайт документации языка с примерами использования функций:  [http://clojuredocs.org/quickref/Clojure%20Core](http://clojuredocs.org/quickref/Clojure%20Core) -4Clojure - отличный способ закрепить навыки программирования на clojure, решая задачи вместе с коллегами со всего мира: +4Clojure — отличный способ закрепить навыки программирования на clojure, решая задачи вместе с коллегами со всего мира:  [http://www.4clojure.com/](http://www.4clojure.com/)  Clojure-doc.org (да, именно) неплохой перечень статей для начинающих: | 
