1
0
mirror of https://github.com/adambard/learnxinyminutes-docs.git synced 2025-08-14 02:34:17 +02:00

[paren/ru] Translating Paren guide into Russian

This commit is contained in:
TheDmitry
2015-02-05 17:52:10 +03:00
parent 49c0548f53
commit 12753c9df6

View File

@@ -8,8 +8,7 @@ translators:
lang: ru-ru lang: ru-ru
--- ---
[Paren](https://bitbucket.org/ktg/paren) - это диалект языка Лисп. Он задуман [Paren](https://bitbucket.org/ktg/paren) - это диалект языка Лисп. Он спроектирован как встроенный язык.
как втроенный язык.
Некоторые примеры из <http://learnxinyminutes.com/docs/racket/>. Некоторые примеры из <http://learnxinyminutes.com/docs/racket/>.
@@ -17,7 +16,7 @@ lang: ru-ru
;;; Комментарии ;;; Комментарии
# комментарии # комментарии
;; Однострочные комментарии начинаются с точки с зяпятой или символа решетки ;; Однострочные комментарии начинаются с точки с запятой или символа решетки
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 1. Примитивные типы данных и операторы ;; 1. Примитивные типы данных и операторы
@@ -30,12 +29,12 @@ lang: ru-ru
(int 3.14) ; => 3 : int (int 3.14) ; => 3 : int
(double 123) ; => 123 : double (double 123) ; => 123 : double
;; Обращение к функции записывается (f x y z ...) ;; Обращение к функции записывается так: (f x y z ...),
;; где f функция, а x, y, z, ... операнды ;; где f функция, а x, y, z, ... операнды
;; Если вы хотите создать список из букв, используйте (quote), чтобы ;; Если вы хотите создать список из букв, используйте (quote), чтобы
;; предотвратить ненужных вычислений ;; предотвратить ненужных вычислений
(quote (+ 1 2)) ; => (+ 1 2) (quote (+ 1 2)) ; => (+ 1 2)
;; Теперь, некоторые арифметические операции ;; Итак, некоторые арифметические операции
(+ 1 1) ; => 2 (+ 1 1) ; => 2
(- 8 1) ; => 7 (- 8 1) ; => 7
(* 10 2) ; => 20 (* 10 2) ; => 20
@@ -48,14 +47,14 @@ lang: ru-ru
true ; обозначает истину true ; обозначает истину
false ; обозначает ложь false ; обозначает ложь
(! true) ; => false (! true) ; => false
(&& true false (prn "doesn't get here")) ; => false (&& true false (prn "досюда не доходим")) ; => false
(|| false true (prn "doesn't get here")) ; => true (|| false true (prn "досюда не доходим")) ; => true
;;; Символы - это числа (int). ;;; Символы - это числа (int).
(char-at "A" 0) ; => 65 (char-at "A" 0) ; => 65
(chr 65) ; => "A" (chr 65) ; => "A"
;;; Строки - это массив символов фиктированной длини. ;;; Строки - это массив символов с фиксированной длиной.
"Привет, мир!" "Привет, мир!"
"Benjamin \"Bugsy\" Siegel" ; обратная косая черта экранирует символ "Benjamin \"Bugsy\" Siegel" ; обратная косая черта экранирует символ
"Foo\tbar\r\n" ; включает управляющие символы в стиле Cи: \t \r \n "Foo\tbar\r\n" ; включает управляющие символы в стиле Cи: \t \r \n
@@ -73,14 +72,14 @@ false ; обозначает ложь
;; 2. Переменные ;; 2. Переменные
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Вы можете создать или инициализировать переменную, используя (set) ;; Вы можете создать или инициализировать переменную, используя (set)
;; имя переменной может использовать любой символ исключая: ();#" ;; имя переменной может содержать любой символ, исключая: ();#"
(set some-var 5) ; => 5 (set some-var 5) ; => 5
some-var ; => 5 some-var ; => 5
;; Обращение к переменной прежде не определенной вызовет исключение ;; Обращение к переменной, прежде не определенной, вызовет исключение
; x ; => Неизвестная переменная: x : nil ; x ; => Неизвестная переменная: x : nil
;; Локальное связывание: Используйте лямбда-вычисения! `a' и `b' связывается ;; Локальное связывание: Используйте лямбда-вычисление! `a' и `b' связывается
;; с `1' и `2' только в пределах (fn ...) ;; с `1' и `2' только в пределах (fn ...)
((fn (a b) (+ a b)) 1 2) ; => 3 ((fn (a b) (+ a b)) 1 2) ; => 3
@@ -90,17 +89,17 @@ some-var ; => 5
;;; Списки ;;; Списки
;; Списки подобны динамическому массиву (vector). (где произвольный доступ равен O(1).) ;; Списки подобны динамическому массиву (vector). (произвольный доступ равен O(1).)
(cons 1 (cons 2 (cons 3 (list)))) ; => (1 2 3) (cons 1 (cons 2 (cons 3 (list)))) ; => (1 2 3)
;; `list' - это удобный конструктор списков с переменным числом элементов ;; `list' - это удобный конструктор списков с переменным числом элементов
(list 1 2 3) ; => (1 2 3) (list 1 2 3) ; => (1 2 3)
;; и quote может также использоваться для литеральных значений списка ;; и quote может также использоваться для литеральных значений списка
(quote (+ 1 2)) ; => (+ 1 2) (quote (+ 1 2)) ; => (+ 1 2)
;; Можно еще использовать `cons' чтобы добвить элемент в начало списка ;; Можно еще использовать `cons', чтобы добавить элемент в начало списка
(cons 0 (list 1 2 3)) ; => (0 1 2 3) (cons 0 (list 1 2 3)) ; => (0 1 2 3)
;; Списки являются основным типом, поэтому для них предусмотренно *много* функций ;; Списки являются основным типом, поэтому для них предусмотрено *много* функций
;; немного примеров из них: ;; немного примеров из них:
(map inc (list 1 2 3)) ; => (2 3 4) (map inc (list 1 2 3)) ; => (2 3 4)
(filter (fn (x) (== 0 (% x 2))) (list 1 2 3 4)) ; => (2 4) (filter (fn (x) (== 0 (% x 2))) (list 1 2 3 4)) ; => (2 4)
@@ -112,7 +111,7 @@ some-var ; => 5
;; Используйте `fn' для создания функций. ;; Используйте `fn' для создания функций.
;; Функция всегда возвращает значение своего последнего выражения ;; Функция всегда возвращает значение своего последнего выражения
(fn () "Hello World") ; => (fn () Hello World) : fn (fn () "Привет Мир") ; => (fn () Привет Мир) : fn
;; Используйте скобки, чтобы вызвать все функции, в том числе лямбда выражение ;; Используйте скобки, чтобы вызвать все функции, в том числе лямбда выражение
((fn () "Привет Мир")) ; => "Привет Мир" ((fn () "Привет Мир")) ; => "Привет Мир"
@@ -130,7 +129,7 @@ some-var ; => 5
(strcat "Привет " name))) (strcat "Привет " name)))
(hello "Стив") ; => "Привет Стив" (hello "Стив") ; => "Привет Стив"
;; ... or equivalently, using a sugared definition: ;; ... или что эквивалентно, используйте синтаксический сахар определения:
(defn hello2 (name) (defn hello2 (name)
(strcat "Привет " name)) (strcat "Привет " name))
@@ -149,7 +148,7 @@ some-var ; => 5
;;; Условный оператор ;;; Условный оператор
(if true ; проверка выражения (if true ; проверка выражения
"это - истина" ; то это выражение "это - истина" ; тогда это выражение
"это - ложь") ; иначе другое выражение "это - ложь") ; иначе другое выражение
; => "это - истина" ; => "это - истина"
@@ -170,7 +169,7 @@ some-var ; => 5
;; 6. Изменение ;; 6. Изменение
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Используйте `set' чтобы назначить новое значение переменной или пространству ;; Используйте `set', чтобы назначить новое значение переменной или памяти
(set n 5) ; => 5 (set n 5) ; => 5
(set n (inc n)) ; => 6 (set n (inc n)) ; => 6
n ; => 6 n ; => 6
@@ -182,9 +181,9 @@ a ; => (3 2)
;; 7. Макросы ;; 7. Макросы
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Макросы позволяют вам расширить синтаксис языка. ;; Макросы позволяют вам расширять синтаксис языка.
;; Paren-макросы легкие. ;; Paren-макросы легкие.
;; В действительности, (defn) - это макрос. ;; Фактически, (defn) - это макрос.
(defmacro setfn (name ...) (set name (fn ...))) (defmacro setfn (name ...) (set name (fn ...)))
(defmacro defn (name ...) (def name (fn ...))) (defmacro defn (name ...) (def name (fn ...)))
@@ -193,5 +192,5 @@ a ; => (3 2)
(infix 1 + 2 (infix 3 * 4)) ; => 15 (infix 1 + 2 (infix 3 * 4)) ; => 15
;; Макросы приводят к неясному коду, т.е. вы можете затереть существующие переменные! ;; Макросы приводят к неясному коду, т.е. вы можете затереть существующие переменные!
;; Они приобразуют код. ;; Они являются кодопреобразующей конструкцией.
``` ```