Size: a a a

2020 March 05

P

Pavel in rust_offtopic
Gymmasssorla
Да, ты один попался умный в оффтопике, создателя хаскелля просто дауны и ничего не понимают
создатели хаскеля просто "о, придумал такую вот хуйню, надо на чём-то протестить" и законтрибьютил её как фичу
источник

p

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

p

polunin.ai in rust_offtopic
тут об этом не раз говорили
источник

G

Gymmasssorla in rust_offtopic
Хз как доги не повесился ещё
источник

G

Gymmasssorla in rust_offtopic
Я спать
источник

P

Pavel in rust_offtopic
Gymmasssorla
Ради более легкого рефакторинга, изменения кода, чтения
каким образом перенос исполнения System.out.println с приложения наружу меняет сам код?
источник

λ

λоλторт in rust_offtopic
polunin.ai
fn interpretator(some: IO) {
 io.execute();
}
fn main() {
 let some = interpreter(IO::new());
}
main() грязная или чистая? при условии что io.execute() грязная
Грязная
источник

p

polunin.ai in rust_offtopic
λоλторт
Грязная
не вижу разницы между этой программой и тем что кинул доге, сори
источник

P

Pavel in rust_offtopic
"ссылочная прозрачность" is the new shiny thing
источник

λ

λоλторт in rust_offtopic
polunin.ai
или внешний мир грязный, интерпретатор грязный, а где-то посередине ио чудесным образом становится чистым?)
Ты в программе с IO монадой не можешь наблюдать нечистоту
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
ну тогда если что делает рантайм не важно, то print(1) - чистая функция
ведб неважно что рантайм делает
Смотри есть функции:

def get_counter() -> int: 
 ...
def set_counter(a: int):
 ...

# есть моя программа:
a = get_counter()
set_counter(a + 1)
b = get_counter()

#я думаю отрефакторить, хочу убрать повторяющийся код:
counter = get_counter()
a = counter
set_counter(a + 1)
b = counter

# получаю фигню очевидным образом
# теперь если я использую IO
def get_counter() -> IO[int]:
 ...
def set_counter(a: int) -> IO[()]:
 ...

#есть моя программа:
monadic_do:
 a <- get_counter()
 set_counter(a + 1)
 b <- get_counter()

#рефакторю, получаю то же поведение, что и раньше:
monadic_do:
 counter = get_counter()
 a <- counter
 set_counter(a + 1)
 b <- counter
источник

p

polunin.ai in rust_offtopic
λоλторт
Ты в программе с IO монадой не можешь наблюдать нечистоту
да-да, я уже понял как вы подменяете понятия
источник

p

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

P

Pavel in rust_offtopic
λоλторт
Ты в программе с IO монадой не можешь наблюдать нечистоту
тоесть если программа завёрнута в ио, то она может использовать только подмножество языка?
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
да-да, я уже понял как вы подменяете понятия
Посмотри мой пример выше, тут чуть нагляднее будет разница между ссылочно прозрачным кодом и не ссылочно прозрачным.
источник

DS

Doge Shibu in rust_offtopic
Там такой, условный питон
источник

λ

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

DS

Doge Shibu in rust_offtopic
Только с monadic_do, который дергает метод bind в каждой строчке у предыдущего значения.
источник

DS

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

p

polunin.ai in rust_offtopic
Doge Shibu
Смотри есть функции:

def get_counter() -> int: 
 ...
def set_counter(a: int):
 ...

# есть моя программа:
a = get_counter()
set_counter(a + 1)
b = get_counter()

#я думаю отрефакторить, хочу убрать повторяющийся код:
counter = get_counter()
a = counter
set_counter(a + 1)
b = counter

# получаю фигню очевидным образом
# теперь если я использую IO
def get_counter() -> IO[int]:
 ...
def set_counter(a: int) -> IO[()]:
 ...

#есть моя программа:
monadic_do:
 a <- get_counter()
 set_counter(a + 1)
 b <- get_counter()

#рефакторю, получаю то же поведение, что и раньше:
monadic_do:
 counter = get_counter()
 a <- counter
 set_counter(a + 1)
 b <- counter
после рефакторинга вышло больше код чем до этого
ну и разницы я не вижу все равно
источник