Size: a a a

2020 February 07

AZ

Alex Zhukovsky in rust_offtopic
и отдельнно выделяют констэкспры/чистые и так далее
источник

AZ

Alex Zhukovsky in rust_offtopic
и там наоборот
источник

AZ

Alex Zhukovsky in rust_offtopic
поэтому компилятор консервативно думает что любая функа может сайдэффектнуть, и правильно делает
источник

P

Pavel in rust_offtopic
Alex Zhukovsky
и там наоборот
где и как?
источник

AZ

Alex Zhukovsky in rust_offtopic
Pavel
где и как?
в хаскеле по-дефолту все чистое и для нечистого надо декорировать
источник

AZ

Alex Zhukovsky in rust_offtopic
в расте любая функа foobarbaz нечистая, и чтобы сделать её чистой нужно декорировать const
источник

P

Pavel in rust_offtopic
Alex Zhukovsky
в хаскеле по-дефолту все чистое и для нечистого надо декорировать
значит, что факториал не должен выбрасываться из лупа по умолчанию?
источник

AZ

Alex Zhukovsky in rust_offtopic
не уверен
источник

AZ

Alex Zhukovsky in rust_offtopic
наверное стоило бы чтобы выбрасывал
источник

AZ

Alex Zhukovsky in rust_offtopic
но нужно учесть все последствия, а не просто "хей, этот код нинужный"
источник

AZ

Alex Zhukovsky in rust_offtopic
в общем случае рандомную функу не декорированную как чистую выкидывать нельзя
источник

AZ

Alex Zhukovsky in rust_offtopic
особенно в низкоуровневых языках, где чтение/запиь определнного адреса имеет специальное значение
источник

DF

Dollar Føølish in rust_offtopic
Оно явно помечается
источник

DF

Dollar Føølish in rust_offtopic
В противном случае компилятор выкинет
источник

DF

Dollar Føølish in rust_offtopic
Даже если это ммио надо писать волатиль над адресом
источник

DF

Dollar Føølish in rust_offtopic
Не выкинет только вызов либы
источник

DF

Dollar Føølish in rust_offtopic
То есть да, по умолчанию вызов либы эффектфул
источник

DF

Dollar Føølish in rust_offtopic
Значит и весь код эффектфул
источник

AK

Alexander Krivitskiy in rust_offtopic
Вспомнил тут один интересный баг, с которым неделю возился. В файлах А и Б есть одинаковые inline функции GetPort(); они обе возвращают разные порты. Эти файлы оба косвенно инклудятся в файл C, где GetPort() вызывается. В результате вызывался GetPort из А, а рассчитывали на из Б. Уважаемые читатели стандарта, почему это скомпилилось, а не бросило ambiguous ошибку?
источник

P

Pavel in rust_offtopic
Alex Zhukovsky
в общем случае рандомную функу не декорированную как чистую выкидывать нельзя
ну, в хаскеле ж можно
источник