Size: a a a

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

2021 March 10

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Kirill Chernyshov
и почему тут не использовать (= 0 (count vers)) вместо empty?
Скобок меньше в empty??...
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
скобок бояться — в лисп не ходить )
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
не, тут empty? норм, not-empty тоже по делу, но это скорее исключение, чем правило
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Kirill Chernyshov
скобок бояться — в лисп не ходить )
не, нафига мне делать каунт и сравнивать с нулем если есть empty??
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
так же можно через case (count verts ...)
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Kirill Chernyshov
так же можно через case (count verts ...)
ты вторую ветку конда пропустил, она в кейс не влезет
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
а вот, кстати, seq ты мог бы вполне запихнуть в let
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
и тогда можно было бы просто (cond vers…
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
а, ну т.е. наоборот, not vers
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
кстати, а зачем тебе cond, если у тебя первые два случая возвращают один результат?
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
кстати, а зачем тебе cond, если у тебя первые два случая возвращают один результат?
Там ..., фолд, там разный результат
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
а, ок, не видно
источник

VP

Vladimir Pavlyuk in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
оно-то можно, но зачем?
думаю, есть кейсы, когда нужно именно Прозрачно передать непустую коллекцию дальше. Существуют же случаи, когда данные передаются каскадно через несколько слоев, а на одном слое будет проверка на nil
В этом смысле, not-empty - не предикат
источник

VP

Vladimir Pavlyuk in Clojure — русскоговорящее сообщество
разница с seq тоже явная - seq преобразует и непустую коллекцию
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
Vladimir Pavlyuk
разница с seq тоже явная - seq преобразует и непустую коллекцию
не, кейсы есть, но в большинстве случаев seq-а достаточно
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
у меня просто боль от коллеги, который seq-и на not-empty правит, потому что "новички в кложе не поймут о чём речь" (а документацию им не завезли), хотя новичков в кложе у нас нет уже больше полугода
источник

VP

Vladimir Pavlyuk in Clojure — русскоговорящее сообщество
ну вообще да, если судить шире, то
1. все оговоренные предикаты (и не предикаты) в любом случае кушают коллекцию
2. технически пустая и непустая коллекция обладают теми же свойствами, а соответственно проверяются эти вещи обычно локально, когда это требует бизнес логика
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
(let [vers '()
     condition (not-every? (partial re-matches #"^\d+$") vers)]
 (case (count vers)
   0 {:chain/stop true}
   (1 2) (if condition
           {:chain/stop true}
           {:chain/data vers})
   (when condition
     {:chain/stop true})))
источник

KC

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

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Kirill Chernyshov
(let [vers '()
     condition (not-every? (partial re-matches #"^\d+$") vers)]
 (case (count vers)
   0 {:chain/stop true}
   (1 2) (if condition
           {:chain/stop true}
           {:chain/data vers})
   (when condition
     {:chain/stop true})))
С одного уровня вложенности условий до двух двойных: case + if, case + when
источник