Size: a a a

2020 March 05

P

Pavel in rust_offtopic
Doge Shibu
Потому что если эти вещи как-то не оборачивать, то теряется ссылочная прозрачность всей программы.

Т.к. это побочные эффекты, вызов которых вне обертке приводит к потери программой хороших свойств
так зачем нужна ссылочная прозрачность? где ссылочная прозрачность в ленивой футуре, что имеет сайд-эффект в виде записи в стандартный вывод?
источник

DF

Dollar Føølish in rust_offtopic
Не сайд
источник

DF

Dollar Føølish in rust_offtopic
Она его возвращает в сигнатуре
источник

DF

Dollar Føølish in rust_offtopic
Это суть эффектов
источник

P

Pavel in rust_offtopic
Dollar Føølish
Она его возвращает в сигнатуре
тоесть, если я захочу добавить логгер, то надо будет менять сигнатуру?
источник

DF

Dollar Føølish in rust_offtopic
Ну типа того либо женерик параметр пропихивать
источник

DF

Dollar Føølish in rust_offtopic
Доге лучше объяснит
источник

p

polunin.ai in rust_offtopic
как мне пока кажется ссылочная прозрачность нужна только ради того чтобы выебываться что у меня программа чистая а у тебя грязная, хз
источник

p

polunin.ai in rust_offtopic
а, не
источник

DS

Doge Shibu in rust_offtopic
Pavel
так зачем нужна ссылочная прозрачность? где ссылочная прозрачность в ленивой футуре, что имеет сайд-эффект в виде записи в стандартный вывод?
См. функцию:
def createPrintLazyFuture(str: String): LazyFuture[Unit] = LazyFuture { print(str) } 


Если мы заменим все её вызовы на то значение, что она возвращает, то поведение не изменится, т.к. она ничего не запускает и не меняет.
источник

P

Pavel in rust_offtopic
Dollar Føølish
Ну типа того либо женерик параметр пропихивать
а если мне неважно, есть ли у неё сайд-эффект и я просто говорю, что буду его вызывать каждый раз как что-то случится? например, каждый раз встречая i в теле запроса я хочу отправлять мейл, или в слак, или в лог, или инкрементировать счётчик, или ничего не делать, мне для всех этих функций сигнатуру прописывать там, где может использоваться эта функция "подсчёта i"?
источник

p

polunin.ai in rust_offtopic
polunin.ai
как мне пока кажется ссылочная прозрачность нужна только ради того чтобы выебываться что у меня программа чистая а у тебя грязная, хз
это касается только для ИО
там ссылочная прозрачность это тупо галочка, чтобы сделать всю программу ссылочно-прозрачной
при этом каких-либо принципиальных преимуществ не несет
источник

DS

Doge Shibu in rust_offtopic
Pavel
так зачем нужна ссылочная прозрачность? где ссылочная прозрачность в ленивой футуре, что имеет сайд-эффект в виде записи в стандартный вывод?
А ссылочная прозрачность нужна опять-таки повторюсь, чтобы проще было рефакторить и работать с кодом.

Тебе не надо думать, что там просиходит, запускается ли футуры и в каком порядке, не дергается там какой-то глобальный флаг или ещё какая-то фигня подобного масштаба.
источник

P

Pavel in rust_offtopic
Doge Shibu
А ссылочная прозрачность нужна опять-таки повторюсь, чтобы проще было рефакторить и работать с кодом.

Тебе не надо думать, что там просиходит, запускается ли футуры и в каком порядке, не дергается там какой-то глобальный флаг или ещё какая-то фигня подобного масштаба.
я и так не думаю об этом, используя обычные лямбды
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
это касается только для ИО
там ссылочная прозрачность это тупо галочка, чтобы сделать всю программу ссылочно-прозрачной
при этом каких-либо принципиальных преимуществ не несет
Я уже сколько раз тут писал, что у тебя гарантий больше в такой программе. Это свойство даёт то, что с кодом с эффектами можно работать и рефакторить особо не думаю о происходящем, чисто механическими приемами.

Как ты бы рефакторил код вообще без каких-либо эффектов.
источник

P

Pavel in rust_offtopic
Doge Shibu
Я уже сколько раз тут писал, что у тебя гарантий больше в такой программе. Это свойство даёт то, что с кодом с эффектами можно работать и рефакторить особо не думаю о происходящем, чисто механическими приемами.

Как ты бы рефакторил код вообще без каких-либо эффектов.
удалял его
источник

DS

Doge Shibu in rust_offtopic
Pavel
я и так не думаю об этом, используя обычные лямбды
Ну а если вся программа с лямбдами, то зачем мне их использовать и всё вручную оборачивать, если есть ленивые футуры, которые уже делают это за меня.
источник

p

polunin.ai in rust_offtopic
Pavel
так зачем нужна ссылочная прозрачность? где ссылочная прозрачность в ленивой футуре, что имеет сайд-эффект в виде записи в стандартный вывод?
попробуй понять как работает 10к строк на си, в которой каждая функция зависит от глобального флага
я проверял, заебешься
с ссылочной прозрачностью ты смотришь на функцию и видишь что она делает со 100% гарантией
источник

P

Pavel in rust_offtopic
Doge Shibu
Ну а если вся программа с лямбдами, то зачем мне их использовать и всё вручную оборачивать, если есть ленивые футуры, которые уже делают это за меня.
ты в футуры оборачиваешь, а я просто пишу :: вместо .
источник

P

Pavel in rust_offtopic
polunin.ai
попробуй понять как работает 10к строк на си, в которой каждая функция зависит от глобального флага
я проверял, заебешься
с ссылочной прозрачностью ты смотришь на функцию и видишь что она делает со 100% гарантией
ну так я не пишу на си как-раз из-за отсутствия утилит рефакторинга
источник