Size: a a a

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

2020 January 24

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Это можно как свитч воспринимать
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
case*
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mikhail Borisov
Это не самая плохая штука, как по мне)
не самая, но логику функций читать усложняет
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
Хум хау
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Это ничто, по сравнению с тем, что можно сделать с сайд эффектами 😀
источник

ST

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

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Andrey Ivanov
А мне это наоборот очень нравится, часто использую и даже макрос для Кложи такой написал )
а можно посмотреть на кота?
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
Ну в Кложе же ровно такие же сайд эффекты как в джаве )
источник

KR

Kostyantin Randomname in Clojure — русскоговорящее сообщество
Рассматривай всю функцию как конд:)
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
Sergey Trofimov
а можно посмотреть на кота?
  (defmacro cond-let
   ([] nil)
   ([x] (throw (IllegalArgumentException. "cond-let error: last one form")))
   ([a b & forms] (if (vector? a)
                    `(let ~a (cond-let ~b ~@forms))
                    `(if ~a ~b (cond-let ~@forms)))))
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
семантику только вкурить и все
   (cond-let
   [a (:a m)]
   (not a) "not a"

   ; [b (+ 1 a)
   ;  c (* 10 b)]
   [b (+ 1 a)]
   [c (* 10 b)]
   (< c 50) "too small c"
   (= c 50) "exact c"

   [d (str "a = " a ", b = " b ", c = " c)
    e (count d)]
   :else {:text d, :length e})
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
вектора - леты. все переменные видны везде ниже
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
я вообще думаю, что если функция просится на выход в разных местах, то она должна быть разбита на несколько функций
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
ну ты известен тем что любишь выносить в верхнеуровневые функции любые мелочи )
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
а потом только нэймспейсами можно ограничить безобразие
источник

D

Dos in Clojure — русскоговорящее сообщество
удобно для уменшения количества состояний
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Andrey Ivanov
семантику только вкурить и все
   (cond-let
   [a (:a m)]
   (not a) "not a"

   ; [b (+ 1 a)
   ;  c (* 10 b)]
   [b (+ 1 a)]
   [c (* 10 b)]
   (< c 50) "too small c"
   (= c 50) "exact c"

   [d (str "a = " a ", b = " b ", c = " c)
    e (count d)]
   :else {:text d, :length e})
и где тут выход в разных местах?
я думал, что-то необычное увижу...
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
если ты не увидел необычное, то это не обязательно проблема объекта наблюдения )
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
я не «люблю выносить в верхнеуровневые функции любые мелочи»
я люблю, чтобы код можно было прочитать и понять, почему он именно такой
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Andrey Ivanov
если ты не увидел необычное, то это не обязательно проблема объекта наблюдения )
в любом случае у тебя обычный выход после cond
источник