Size: a a a

2020 April 23

p

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

DS

Doge Shibu in rust_offtopic
Это не вызов функции, же.
foo = do { x <- wat; z <- wan y; return z + 1 }  - это wat.flat_map(|x| wan(y).map(|z| z + 1))
источник

p

polunin.ai in rust_offtopic
Doge Shibu
Это не вызов функции, же.
foo = do { x <- wat; z <- wan y; return z + 1 }  - это wat.flat_map(|x| wan(y).map(|z| z + 1))
ну вот flat_map() вызов функции
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
ну вот flat_map() вызов функции
(которая тоже чистая)
источник

AZ

Alex Zhukovsky in rust_offtopic
а комбинация чистых функций тоже всегда чистая
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
ну вот flat_map() вызов функции
Только они ленивые, этот flat_map ничего не сделает, а вернёт что-то типа FlatMap(state => wat(state), x => Map(state => wan(y)(state), z => z + 1))

И никаких вычислений не будет
источник

p

polunin.ai in rust_offtopic
Doge Shibu
Только они ленивые, этот flat_map ничего не сделает, а вернёт что-то типа FlatMap(state => wat(state), x => Map(state => wan(y)(state), z => z + 1))

И никаких вычислений не будет
а потом ты ее вызовешь через do _ <- foo
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
а потом ты ее вызовешь через do _ <- foo
do это флатмап
источник

AZ

Alex Zhukovsky in rust_offtopic
флатмап это ду
источник

AZ

Alex Zhukovsky in rust_offtopic
запомни уже
источник

AZ

Alex Zhukovsky in rust_offtopic
простой факт
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
а потом ты ее вызовешь через do _ <- foo
И оно в свою очередь вернет FlatMap(state => foo(state), cont => ...)
источник

p

polunin.ai in rust_offtopic
Doge Shibu
И оно в свою очередь вернет FlatMap(state => foo(state), cont => ...)
ну и в рантайме запустится этот флатмап и вывод сделается
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
ну и в рантайме запустится этот флатмап и вывод сделается
Но нас волнует не рантайм, а наша программа. В ней функции все останутся ссылчоно прозрачными, потому что они возвращают эти FlatMap"ы, которые не вычисляются при вызове функции возвращаюшей IO
источник

p

polunin.ai in rust_offtopic
Doge Shibu
Но нас волнует не рантайм, а наша программа. В ней функции все останутся ссылчоно прозрачными, потому что они возвращают эти FlatMap"ы, которые не вычисляются при вызове функции возвращаюшей IO
ну вызовет ее не main, а функция выше, все равно кто-то вызовет. вывод будет потому что он описан в коде. а делать ио ссылочно прозрачным это самообман с непонятной целью.
источник

AZ

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

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
ну вызовет ее не main, а функция выше, все равно кто-то вызовет. вывод будет потому что он описан в коде. а делать ио ссылочно прозрачным это самообман с непонятной целью.
цель в том, чтобы let foo = print "Hello" не делал вывод на экран
источник

AZ

Alex Zhukovsky in rust_offtopic
как по мне вполне понятна цель
источник

p

polunin.ai in rust_offtopic
Alex Zhukovsky
цель в том, чтобы let foo = print "Hello" не делал вывод на экран
ну и зачем это?
источник

DS

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