Size: a a a

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

2021 February 23

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Dos
delay мне кажется добавить дополнительную нагрузку на чтение кода)
ну, что код делает, то и написано 😊
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
Sergey Trofimov
  (let [e (delay (expensive-call))]
   (when (and (cheap-call) @e)
     (some-fn @e)))
а какой профит, если можно просто на результат cheap посмотреть?
источник

D

Dos in Clojure — русскоговорящее сообщество
Sergey Trofimov
  (let [e (delay (expensive-call))]
   (when (and (cheap-call) @e)
     (some-fn @e)))
по сути, сейчас так и написано, но только без delay
источник

ST

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

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Dos
по сути, сейчас так и написано, но только без delay
«сейчас» это как?
источник

D

Dos in Clojure — русскоговорящее сообщество
(let [e  (expensive-call)]
    (when (and (cheap-call) e)
     (some-fn e)))
источник

D

Dos in Clojure — русскоговорящее сообщество
Sergey Trofimov
«сейчас» это как?
до того как я обратил на это внимание
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Dos
(let [e  (expensive-call)]
    (when (and (cheap-call) e)
     (some-fn e)))
нет, тут expensive call делается всегда
источник

D

Dos in Clojure — русскоговорящее сообщество
Sergey Trofimov
нет, тут expensive call делается всегда
да, это "сейчас"
источник

D

Dos in Clojure — русскоговорящее сообщество
Sergey Trofimov
нет, тут expensive call делается всегда
это был ответ на ваш вопрос
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Dos
да, это "сейчас"
а в моём примере вызов только по потребности
источник

D

Dos in Clojure — русскоговорящее сообщество
Sergey Trofimov
а в моём примере вызов только по потребности
я понял это)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
вот этот вариант хорош, но в данном конкретном случае
https://t.me/clojure_ru/142230
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
хотя не, он неправильный, если expensive вернёт false, то some-fn не позовётся 😊
источник

D

Dos in Clojure — русскоговорящее сообщество
Sergey Trofimov
хотя не, он неправильный, если expensive вернёт false, то some-fn не позовётся 😊
так правильно же
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
хотя не, он неправильный, если expensive вернёт false, то some-fn не позовётся 😊
сорри, вижу, так и было в исходном
источник

D

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

D

Dos in Clojure — русскоговорящее сообщество
теперь выбрать нужно между ними)))
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
это варианты с some-> не идентичны, если expensive может возвращать false
источник

ST

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