Size: a a a

Clojure — русскоговорящее сообщество

2020 October 30

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
Если же через предикаты, то зипперы с zip/replace
источник

SB

Sergey Bronnikov in Clojure — русскоговорящее сообщество
Помогите пожалуйста cконвертировать структуру типа {0 {:BALANCE 73}, 1 {:BALANCE 0}, 2 {:BALANCE 3}, 3 {:BALANCE 4}, 4 {:BALANCE 3}, 5 {:BALANCE 1}, 6 {:BALANCE 2}, 7 {:BALANCE 4}, 8 {:BALANCE 2}, 9 {:BALANCE 8}} в {0 73, 1 0, 2 3, 3 4, 4 3, 5 1, 6 2, 7 4, 8 2, 9 8}
источник

ND

Nikita Domnickij in Clojure — русскоговорящее сообщество
что-то вроде
(reduce-kv (fn [acc idx {bal :balance}] (into acc [idx bal]) [] coll)
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
(into {} (map (fn [[k {b :BALLANCE}]] [k b]) {0 {:BALANCE 73}, 1 {:BALANCE 0}, 2 {:BALANCE 3}, 3 {:BALANCE 4}, 4 {:BALANCE 3}, 5 {:BALANCE 1}, 6 {:BALANCE 2}, 7 {:BALANCE 4}, 8 {:BALANCE 2}, 9 {:BALANCE 8}})
источник

ND

Nikita Domnickij in Clojure — русскоговорящее сообщество
а, там мапа
источник

SB

Sergey Bronnikov in Clojure — русскоговорящее сообщество
Kirill Chernyshov
(into {} (map (fn [[k {b :BALLANCE}]] [k b]) {0 {:BALANCE 73}, 1 {:BALANCE 0}, 2 {:BALANCE 3}, 3 {:BALANCE 4}, 4 {:BALANCE 3}, 5 {:BALANCE 1}, 6 {:BALANCE 2}, 7 {:BALANCE 4}, 8 {:BALANCE 2}, 9 {:BALANCE 8}})
там опечатка в BALLANCE, но работает. спасибо )
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
(let [coll {0 {:BALANCE 73}
           1 {:BALANCE 0}
           2 {:BALANCE 3}
           3 {:BALANCE 4}
           4 {:BALANCE 3}
           5 {:BALANCE 1}
           6 {:BALANCE 2}
           7 {:BALANCE 4}
           8 {:BALANCE 2}
           9 {:BALANCE 8}}]
 (into {} (map (fn [[k {b :BALANCE}]] [k b])) coll))
источник

SB

Sergey Bronnikov in Clojure — русскоговорящее сообщество
я тоже пытался через map сделать, но не делал destructuring и поэтому не работало
источник

SB

Sergey Bronnikov in Clojure — русскоговорящее сообщество
Вот какой вопрос меня мучает. В кложе принято писать код в стиле Маяковского - многоэтажными конструкциями с отступами. Если, к примеру, в середину одной из таких конструкций добавить изменение, то нужно переформатировать строки ниже этой строки и получается патч, в котором вместо одной строки изменения для нескольких строк. Это например не очень удобно для ревьюера, ну и просто как то непривычно после других языков. Как вы с этим справляетесь?
источник

ИФ

Иван Федоров... in Clojure — русскоговорящее сообщество
Sergey Bronnikov
Вот какой вопрос меня мучает. В кложе принято писать код в стиле Маяковского - многоэтажными конструкциями с отступами. Если, к примеру, в середину одной из таких конструкций добавить изменение, то нужно переформатировать строки ниже этой строки и получается патч, в котором вместо одной строки изменения для нескольких строк. Это например не очень удобно для ревьюера, ну и просто как то непривычно после других языков. Как вы с этим справляетесь?
Кажется, очень редкая ситуация в моём мирке.
Можно пример, чтобы исключить сломанный телефон?
источник

SB

Sergey Bronnikov in Clojure — русскоговорящее сообщество
Да, попозже закину.
источник

ИФ

Иван Федоров... in Clojure — русскоговорящее сообщество
Вообще я люблю башенки:
cond
let
->> / ->
источник

ИФ

Иван Федоров... in Clojure — русскоговорящее сообщество
В кложе полно таких штук чтобы башенки были не пизанские. Ну и средняя высота функций в пределах 8 строк
источник

SB

Sergey Bronnikov in Clojure — русскоговорящее сообщество
Иван Федоров
Кажется, очень редкая ситуация в моём мирке.
Можно пример, чтобы исключить сломанный телефон?
Вот пример (я удалил одну строку):
        (when (= node (first (db/primaries test)))
-         (cl/with-conn-failure-retry conn
-           (info (str "Creating table " table-name))
-           (j/execute! conn [(str "CREATE TABLE IF NOT EXISTS " table-name
-                             "(id INT NOT NULL PRIMARY KEY,
-                             balance INT NOT NULL)")])
-           (doseq [a (:accounts test)]
-               (info "Populating account")
-               (sql/insert! conn table-name {:id      a
-                                             :balance (if (= a (first (:accounts test)))
-                                                       (:total-amount test)
-                                                       0)}))))
+         (info (str "Creating table " table-name))
+         (j/execute! conn [(str "CREATE TABLE IF NOT EXISTS " table-name
+                           "(id INT NOT NULL PRIMARY KEY,
+                           balance INT NOT NULL)")])
+         (doseq [a (:accounts test)]
+             (info "Populating account")
+             (sql/insert! conn table-name {:id      a
+                                           :balance (if (= a (first (:accounts test)))
+                                                     (:total-amount test)
+                                                     0)}))))
        (assoc this :conn conn :node node))))
источник
2020 October 31

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Sergey Bronnikov
Вот пример (я удалил одну строку):
        (when (= node (first (db/primaries test)))
-         (cl/with-conn-failure-retry conn
-           (info (str "Creating table " table-name))
-           (j/execute! conn [(str "CREATE TABLE IF NOT EXISTS " table-name
-                             "(id INT NOT NULL PRIMARY KEY,
-                             balance INT NOT NULL)")])
-           (doseq [a (:accounts test)]
-               (info "Populating account")
-               (sql/insert! conn table-name {:id      a
-                                             :balance (if (= a (first (:accounts test)))
-                                                       (:total-amount test)
-                                                       0)}))))
+         (info (str "Creating table " table-name))
+         (j/execute! conn [(str "CREATE TABLE IF NOT EXISTS " table-name
+                           "(id INT NOT NULL PRIMARY KEY,
+                           balance INT NOT NULL)")])
+         (doseq [a (:accounts test)]
+             (info "Populating account")
+             (sql/insert! conn table-name {:id      a
+                                           :balance (if (= a (first (:accounts test)))
+                                                     (:total-amount test)
+                                                     0)}))))
        (assoc this :conn conn :node node))))
Ну уберешь ты в питоне with, то же самое будет
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
В c# using тоже
for/while/if всё это если уберешь в других языках будет такой же дифф
источник

SB

Sergey Bronnikov in Clojure — русскоговорящее сообщество
в целом верно, но в других языках меньше этой этажности.
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Sergey Bronnikov
в целом верно, но в других языках меньше этой этажности.
Этажность убирается чейнингом
источник

N

Nikolay in Clojure — русскоговорящее сообщество
Sergey Bronnikov
в целом верно, но в других языках меньше этой этажности.
Вспомнил callback hall в js, что-то защемило в область сердца
источник

CD

Camina Drummer in Clojure — русскоговорящее сообщество
Mikhail Borisov
Этажность убирается чейнингом
И дроблением на функции
источник