Size: a a a

2020 April 01

AZ

Alex Zhukovsky in rust_offtopic
Dika
Об этом и речь
человек хочет писать эффекты в чистых функциях
источник

AZ

Alex Zhukovsky in rust_offtopic
алё
источник

p

polunin.ai in rust_offtopic
Alex Zhukovsky
а в сишеке - нет
все равно потом сделаешь
res = do
 res <- a
и получишь нечистое значение
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
все равно потом сделаешь
res = do
 res <- a
и получишь нечистое значение
ты в расте юзал [asyncmain]?
источник

p

polunin.ai in rust_offtopic
Alex Zhukovsky
ты в расте юзал [asyncmain]?
tokio::main ?
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
tokio::main ?
да
источник

p

polunin.ai in rust_offtopic
да, использую
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
все равно потом сделаешь
res = do
 res <- a
и получишь нечистое значение
Нет, чем оно нечистое?
источник

SP

Stanislav Popov in rust_offtopic
Doge Shibu
Каких взрослых?

Покажи каким образом у тебя IO оказывается не ссылочно прозрачным?
когда ты непосредственно вызываешь всю портянку с world
источник

p

polunin.ai in rust_offtopic
Doge Shibu
Нет, чем оно нечистое?
то что зависит от внешнего мира
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
да, использую
вот IO == impl Future<Result<(), IOError>>

main IO == tokio::main

а рантайм хаскелля это реактор.

Из футуры ты никак не можешь продолжить выполнение или увидеть какую-то нечистоту. А раз не можешь увидеть, значит её и нет.

Нужно понимать, что хаскель и работает как ты предлагаешь - чистое ядро я "грязное" выполнение всех операций, только ты предлагаешь только часть чистых функций делать, а модель с ИО позволяет сделать чистой всю прогармму
источник

DS

Doge Shibu in rust_offtopic
Stanislav Popov
когда ты непосредственно вызываешь всю портянку с world
Это никак не отменяет ссылочную прозрачность IO при работе с кодом.
источник

DS

Doge Shibu in rust_offtopic
Stanislav Popov
когда ты непосредственно вызываешь всю портянку с world
Ты посмотри определение ссылочной прозрачности. Оно ничего не говорит о том, что там в реальном мире происходит.

Только о тех свойствах, которые есть у данных функций.
источник

DS

Doge Shibu in rust_offtopic
У IO и всех функцйи работы с ним (вне unsafePerformIO и т.п.) - все эти свойства выполняются
источник

p

polunin.ai in rust_offtopic
а толку если значения разные приходят
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
а толку если значения разные приходят
не приходят
источник

p

polunin.ai in rust_offtopic
Alex Zhukovsky
не приходят
у тебя внешний мир всегда одни и те же данные шлет?
источник

SP

Stanislav Popov in rust_offtopic
Doge Shibu
Ты посмотри определение ссылочной прозрачности. Оно ничего не говорит о том, что там в реальном мире происходит.

Только о тех свойствах, которые есть у данных функций.
а какие свойства кроме того что она помечена как ио?
источник

AZ

Alex Zhukovsky in rust_offtopic
main = do
  let a = readLine
 
  a1 <- a
  a2 <- a

  print $ a1 ++ a
источник

DS

Doge Shibu in rust_offtopic
Stanislav Popov
а какие свойства кроме того что она помечена как ио?
Определение ссылочной прозрачности:

функцию можно заменить на возвращаемое ей значение так, что поведение программы от этого не изменится.
источник