Size: a a a

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

2019 May 09

MG

Mikhail Gusarov in Clojure — русскоговорящее сообщество
Офигенское преимущество на практике ведёт к потере настоящего офигенского преимущества: композируемости.
источник

ST

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

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
пишу и на cljs, и там тоже макросы свои пишу
источник

ST

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

MG

Mikhail Gusarov in Clojure — русскоговорящее сообщество
В clojure и clojurescript очень редко нужно создавать новые управляющие конструкции, имеющиеся вполне норм, а макросы ни для чего другого толком и не нужны.
источник

MG

Mikhail Gusarov in Clojure — русскоговорящее сообщество
Пожалуй, последний раз я видел по делу применение макросов в core.async.
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
ок, не буду смущать сообщество )
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Andrey Ivanov
пишу и на cljs, и там тоже макросы свои пишу
вот для такого, как здесь? https://t.me/clojure_ru/86813
источник

MG

Mikhail Gusarov in Clojure — русскоговорящее сообщество
@IIvana Не, так не годится. Покажи, где макросы прям по делу постоянно. Вдруг и правда есть применение, которое ах, и надо всем бежать и использовать?
источник

ST

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

MG

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

YU

Yanis Urbis in Clojure — русскоговорящее сообщество
Я этот макрос взял из документации либы :) @dottedmag @MityaSaray @lensgolda спасибо за советы, завтра скину то, что в итоге получилось
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mikhail Gusarov
car/wcar в библиотеке выше, кстати, пограничный случай — библиотека там занимается нетривиальной работой со списком поданных ей операций и, пожалуй, это удобно.
вроде как использование partial/apply привело бы к такому же результату...
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
Я же не знаю что кому покажется по делу и ах, а кому не по делу и не ах. Даже пример выше человек решил с макросом - все работает, пуркуа бы и не па? У меня есть примеры макросов даже в том дебаггере, которым я тут уже занасекомил чатик, и в других примерах. Могу скинуть их тоже. Ну или вот имхо офигенский макрос, эз фо ми
(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)))))

но всегда можно сказать - нет, я лучше буду лапшу писать, но зато лишнего макроса не напишу
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Yanis Urbis
Я этот макрос взял из документации либы :) @dottedmag @MityaSaray @lensgolda спасибо за советы, завтра скину то, что в итоге получилось
у Taoussanis наверное профдеформация на почве написания множества библиотек 😊
источник

MG

Mikhail Gusarov in Clojure — русскоговорящее сообщество
@IIvana cond-let — хороший пример управляющей конструкции. По-хорошему, ей место в стандартной библиотеке. Но это не уровень кода приложения.
источник

MG

Mikhail Gusarov in Clojure — русскоговорящее сообщество
@strofimov1972 Исполняется тело, собираются все операции, поданные в нём в редис, исполняются и возвращаются одним списком. Без макроса (хотя бы `with-bindings`) такое провернуть тяжеловато.
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
так речь про новые управляющие конструкции и идет. понятно, что все написанное с макросами, можно писать напрямую в код без макросов, работая самому макроэкспандом. но ведь моща лиспа для этого и есть, чтобы ее применять, я думаю. Вот еще пример моих макросов https://github.com/Ivana-/naso/blob/master/core.clj
источник

AI

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

AI

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