Size: a a a

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

2020 November 06

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
ну вот я приводил пример
```
(def f [x] (print x) (inc x))
```
это функция, которая увеличивает на 1
ещё автор для каких-то целей добавил туда логирование
как должно поменяться моё отношение к данной функции от наличия в ней println?
я такое с практической точки зрения продолжаю считать чистой функцией
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Sergey Trofimov
ну вот я приводил пример
```
(def f [x] (print x) (inc x))
```
это функция, которая увеличивает на 1
ещё автор для каких-то целей добавил туда логирование
как должно поменяться моё отношение к данной функции от наличия в ней println?
Знать, что в ленивых и многопоточных контекстах не стоит ждать соблюдения порядка логирования
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Я ж говорю, не очень страшно
источник

ST

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

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
(def f [x] (set! #'clojure.core/+ *) (inc x)) а это чистая?
источник

ST

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

MB

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

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mikhail Borisov
(def f [x] (set! #'clojure.core/+ *) (inc x)) а это чистая?
чистая, если ты не обратишься к плюсу 😊
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
понятно, ну удачи с такими чистыми функциями)
источник

MB

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

MB

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

ST

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

MB

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

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Mikhail Borisov
Может я хочу пойти по поинтеру и переписать машинный код, а мне тут какие-то медленные структуры данных дают, которые копируют куски при каждой записи
Ну вот вполне осмысленное действие
источник

ST

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

MB

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

ST

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

ST

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

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Sergey Trofimov
что-то я не понял алгоритм перехода в такую степь
Ну, есть просто набор "практик", которые помогают писать относительно легко понимаемый и поддерживаемый код
источник

MB

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