Size: a a a

2020 March 09

G

Gymmasssorla in rust_offtopic
Nyc Enas
то что она возвращает
Тогда по твоему определению чистая функция может изменять глобальные переменные. Нет, чистая функция такого делать не может
источник

G

Gymmasssorla in rust_offtopic
Функция f чистая, если f(...) ссылочно-прозрачно
источник

NE

Nyc Enas in rust_offtopic
Gymmasssorla
Тогда по твоему определению чистая функция может изменять глобальные переменные. Нет, чистая функция такого делать не может
я не давал полного определения
источник

G

Gymmasssorla in rust_offtopic
Gymmasssorla
Функция f чистая, если f(...) ссылочно-прозрачно
Вот это полное определение
источник

EG

Emmanuel Goldstein in rust_offtopic
Gymmasssorla
Вот это полное определение
Это не очень осмысленное определение, потому что оно сразу поднимает вопрос «что такое ссылочно-прозрачно?».
источник

OA

Oleg Andreev in rust_offtopic
Emmanuel Goldstein
Функция чистая, когда значимые эффекты программы не изменятся, если функцию заменить на её возвращаемое значение.
только $$$ платят за функции которые делают что-то полезное. Так же как и программиста держат в штате если её нельзя просто заменить на результат её работы.
источник

NE

Nyc Enas in rust_offtopic
теперь нужно определение «ссылочно прозрачно»
источник

G

Gymmasssorla in rust_offtopic
Nyc Enas
теперь нужно определение «ссылочно прозрачно»
Если expr можно подставить её значением без изменения работы программы, то expr ссылочно-прозрачно
источник

NE

Nyc Enas in rust_offtopic
это похоже не на определение а на признак
источник

G

Gymmasssorla in rust_offtopic
Nyc Enas
это похоже не на определение а на признак
Почему?
источник

NE

Nyc Enas in rust_offtopic
Переслано от Nyc Enas
теперь нужно определение «ссылочно прозрачно»
источник

EG

Emmanuel Goldstein in rust_offtopic
Gymmasssorla
Если expr можно подставить её значением без изменения работы программы, то expr ссылочно-прозрачно
А это неправда.
fn f() {
   for i in (1..1_000_000) { black_box(i * i); }
   5
}

Прекрасная чистая функция, но работа программы однозначно изменится, если её заменить на её результат.
источник

G

Gymmasssorla in rust_offtopic
Nyc Enas
Переслано от Nyc Enas
теперь нужно определение «ссылочно прозрачно»
источник

G

Gymmasssorla in rust_offtopic
Emmanuel Goldstein
А это неправда.
fn f() {
   for i in (1..1_000_000) { black_box(i * i); }
   5
}

Прекрасная чистая функция, но работа программы однозначно изменится, если её заменить на её результат.
black_box чистая?
источник

EG

Emmanuel Goldstein in rust_offtopic
Процессор погреется больше, считаться будет дольше
источник

G

Gymmasssorla in rust_offtopic
Emmanuel Goldstein
Процессор погреется больше, считаться будет дольше
А это нас не волнует
источник

EG

Emmanuel Goldstein in rust_offtopic
Gymmasssorla
black_box чистая?
Блэкбокс чистая, это nop после компиляции.
источник

В

Вафель in rust_offtopic
Gymmasssorla
Функция f чистая, если f(...) ссылочно-прозрачно
источник

EG

Emmanuel Goldstein in rust_offtopic
Gymmasssorla
А это нас не волнует
Поэтому в определении нужно «значимая работа программы», чтобы отделить прогрев процессора от полезного результата
источник

NE

Nyc Enas in rust_offtopic
+
источник