Size: a a a

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

2021 August 12

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
только thread-last тут не подходит _по смыслу_ ...
источник

AF

Andrey Fёdorov in Clojure — русскоговорящее сообщество
(->> :c (foo :a :b >вставляет сюда<))
(-> :c (foo >вставляет сюда< :a :b))
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Я бы ещё делал через some-> чтоб отличать неудачное применение
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
раз уж всё равно двойные скобочки
(-> {:address {:user {:first "A" :second "B"}}} :address :user ((juxt :first :second)) ((partial str/join " ")))
источник

AF

Andrey Fёdorov in Clojure — русскоговорящее сообщество
А какой смысл сохранять thread-first?
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
https://clojure.org/guides/threading_macros

Thread-first and thread-last are used in different circumstances. Which one is appropriate depends on the signature of the transformation functions. Ultimately you’ll need to consult the documentation of the functions used, but there are a few rules of thumb:

By convention, core functions that operate on sequences expect the sequence as their last argument. Accordingly, pipelines containing map, filter, remove, reduce, into, etc usually call for the ->> macro.

Core functions that operate on data structures, on the other hand, expect the value they work on as their first argument. These include assoc, update, dissoc, get and their -in variants. Pipelines that transform maps using these functions often require the -> macro.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
чтобы оставаться в рамках соглашений
источник

AF

Andrey Fёdorov in Clojure — русскоговорящее сообщество
Так это же конвенция для core функций, там в тексте явно указано. А мы тут пользовательские пишем)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
ну, тут иногда пробегает запрос на идиоматичность...
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
и зовутся-то коревские функции в макросе...
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Какая разница, оба макроса это вариация на классическую композицию
источник

ST

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

PP

Pavel Peganov in Clojure — русскоговорящее сообщество
Рич в каком-то докладе рассказывал про систему подбора песен на радио, где по вторникам каждая песня игралась дважды, но во все остальные дни было жёсткое требование не играть песню больше раза в день даже случайно.

И он как раз про такие ситуации сказал, что при дизайне языка/компилятора хочется сжечь все эти "два по вторникам" огнём.
источник

ST

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

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Да, по-этому я добавил слово «вариация»
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
ну а что такое «классическая композиция»?
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Пишите с учётом, а то получается потом (->> a b (-> c d) e)
источник

AF

Andrey Fёdorov in Clojure — русскоговорящее сообщество
Мне вообще кажется если используется второй безусловынй threading, нужно декомпозировать форму
источник