Size: a a a

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

2020 November 05

ST

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

ST

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

MB

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

MB

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

ST

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

MB

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

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
map тут тоже немного к сюрпризу привел бы
источник

ST

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

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
В данном случае это контролируется тем, что у меня коллекция конечная и не слишком большая
источник

MB

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

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mikhail Borisov
В данном случае это контролируется тем, что у меня коллекция конечная и не слишком большая
а 1000 раз одновременно твоё приложение никто не запустит? 😊
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Sergey Trofimov
а 1000 раз одновременно твоё приложение никто не запустит? 😊
Ну, раз 10 мб надо будет запустить
источник

MB

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

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
В общем, я планирую решать проблемы по мере поступления)
источник

MB

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

ST

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

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Что мы тогда вообще называем "чистым"?
источник

MB

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

MB

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

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mikhail Borisov
Если мы не только вычисления в нем проводим
эта фраза звучит как «нечистый вызов внутри функции делает её нечистой», что применимо не только к future 😊
источник