Size: a a a

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

2020 November 06

MB

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

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Sergey Trofimov
пример можно? а то может я не понял, что такое зафакапить
Ну, там присутствуют мьютексы, программисты очень часто такое факапят)
источник

ST

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

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
А еще иногда нужно подумать, нужно атомарное изменение или volatile, чтобы побыстрее работало
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Ну вот dosync простая функция?
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Вроде функциональность не выглядит сложной
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mikhail Borisov
Ну вот dosync простая функция?
видимо не настолько, что ты именно ёё хочешь для примера 😊
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Sergey Trofimov
рекурсивная чистая функция валится со stackoverflow на большой коллекции — сюрприз 😊
Ну это не совсем честно. Можно передать параметр который не влезет в память
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Ну, я уверен, что 95% программистов не смогут ее без факапов написать в течение дня
источник

MB

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

AC

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

ST

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

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Так что можно сказать что чистых функций не существует
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Из любой может эксепшон пульнуть т.е. сайдэффект
источник

MB

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

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Чиселки и строки перекладывать легко, рассуждать про race conditions и распределенные системы - не очень
источник

MB

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

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
понятно, зафакапить означает облажаться в реализации функции с сайд эффектами
тогда упростим
я пишу свою функцию с сайд-эффектом
(defn log [x] (print x))

вытекает ли из наличия сайд эффекта обязательность лёгкости зафакапиться и сложности протестировать
мне кажется что подобные проблемы не связаны с сайдэффектностью напрямую
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Mikhail Borisov
(def f [x] (set! #'clojure.core/+ *) (inc x)) а это чистая?
Здесь в контексте этой функции тоже проблем нет, а в контексте программы есть
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Sergey Trofimov
тогда упростим
я пишу свою функцию с сайд-эффектом
(defn log [x] (print x))

вытекает ли из наличия сайд эффекта обязательность лёгкости зафакапиться и сложности протестировать
мне кажется что подобные проблемы не связаны с сайдэффектностью напрямую
А ты видел реализацию print?
источник