Size: a a a

2020 April 01

AZ

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

AZ

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

DS

Doge Shibu in rust_offtopic
Для функий, которые возвращают IO и не делают фигню вроде unsafePerformIO, это свойство выполняется.
источник

AZ

Alex Zhukovsky in rust_offtopic
короч просто поработай с этим, должно дойти
источник

p

polunin.ai in rust_offtopic
Doge Shibu
Определение ссылочной прозрачности:

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

AZ

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

AZ

Alex Zhukovsky in rust_offtopic
IO это грубо говоря структура вида IO("SELECT * FROM MYTABLE")
источник

p

polunin.ai in rust_offtopic
Alex Zhukovsky
ты не видишь _значений_ из внешнего мира
как же
main = do
  let a = readLine
 
  a1 <- a
  a2 <- a

вот тут вижу a1 значение
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
как же
main = do
  let a = readLine
 
  a1 <- a
  a2 <- a

вот тут вижу a1 значение
a1 это не значение, это сахар для лямбды
источник

p

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

AZ

Alex Zhukovsky in rust_offtopic
ты не можешь передать туда параметр, толкьо ранатйм может
источник

p

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

SP

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

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

p

polunin.ai in rust_offtopic
Alex Zhukovsky
ты не можешь передать туда параметр, толкьо ранатйм может
ну это любые операции ввода-вывода такие, только рантайм может значение туда положить
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
ну это любые операции ввода-вывода такие, только рантайм может значение туда положить
#[derive(Debug, Clone)]
struct IO(String);

fn read_line() -> IO {
   IO("SELECT * FROM TABLE".into())
}

fn main() {
   let a = read_line();
   print!("{:?}", a);
}


Функция read_line - чистая или нет?
источник

DS

Doge Shibu in rust_offtopic
Stanislav Popov
тоесть была функция которая вызывалась с world
и заменилась на функцию которая вызывается с world
так?
Ну да, примерно так.

Сами функции для работы с IO ничего не делают, только возвращают функции, которые принимают World. Отсюда требование ссылочной прозрачности полностью сохраняется.
источник

p

polunin.ai in rust_offtopic
Alex Zhukovsky
#[derive(Debug, Clone)]
struct IO(String);

fn read_line() -> IO {
   IO("SELECT * FROM TABLE".into())
}

fn main() {
   let a = read_line();
   print!("{:?}", a);
}


Функция read_line - чистая или нет?
да
источник

AZ

Alex Zhukovsky in rust_offtopic
вот хаскельное ио так и устроено
источник

DS

Doge Shibu in rust_offtopic
Ты можешь вызов функции, которая только комбинирует другие функции заменить на результат без измнения поведения
источник

AZ

Alex Zhukovsky in rust_offtopic
это просто структурка которая ничего не делает
источник