Size: a a a

2020 March 05

P

Pavel in rust_offtopic
и неявного скоупа
источник

p

polunin.ai in rust_offtopic
Doge Shibu
Я уже сколько раз тут писал, что у тебя гарантий больше в такой программе. Это свойство даёт то, что с кодом с эффектами можно работать и рефакторить особо не думаю о происходящем, чисто механическими приемами.

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

DS

Doge Shibu in rust_offtopic
Pavel
ты в футуры оборачиваешь, а я просто пишу :: вместо .
Ну у них преимущества кроме этого есть, которые я уже упоминал.

Более удобные комбинаторы, ФП примитивы синхронизации (которые сильно удобнее не ФП примитивов по эргономике), простая отмена задач, STM и т.д. и т.п.
источник

P

Pavel in rust_offtopic
Doge Shibu
Ну у них преимущества кроме этого есть, которые я уже упоминал.

Более удобные комбинаторы, ФП примитивы синхронизации (которые сильно удобнее не ФП примитивов по эргономике), простая отмена задач, STM и т.д. и т.п.
что такое "простая отмена задач"?
источник

DS

Doge Shibu in rust_offtopic
Pavel
что такое "простая отмена задач"?
В смысле реализацию ленивых отменямых задач сделать сильно проще, чем в энергичном случае.
источник

DS

Doge Shibu in rust_offtopic
Без необходимости убивать треды.
источник

DS

Doge Shibu in rust_offtopic
(*)
источник

P

Pavel in rust_offtopic
Doge Shibu
Без необходимости убивать треды.
так треды не надо убивать, их можно просто интерраптить
источник

DS

Doge Shibu in rust_offtopic
(* - отдельный вопрос с чисто CPU-bound задачами, но в хаскеле и они отменяются запросто)
источник

DF

Dollar Føølish in rust_offtopic
В хаскеле есть гринтреды потому что
источник

λ

λоλторт in rust_offtopic
в хаскеле в целом есть нормальный рантайм
источник

DS

Doge Shibu in rust_offtopic
Dollar Føølish
В хаскеле есть гринтреды потому что
Не из-за этого, а потому что там есть проверка на отмену задачи при аллокациях.

Поэтому отменить можно даже CPU-bound таск как нечего делать.
источник

DS

Doge Shibu in rust_offtopic
(Не убивая машинный тред)
источник

λ

λоλторт in rust_offtopic
там можно и форкос сделать, а после убить его асинхронным эксепшном
источник

P

Pavel in rust_offtopic
тоесть тебе прилетает интеррапт в тред, если ты был запаркован на io -- получил эксепшен, бизи бивер получил флаг Thread.interrupted()
источник

DF

Dollar Føølish in rust_offtopic
Это разные подходы но суть одна
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
ну я так не думаю. может если скинешь аналогичные программы с ссылочной прозрачностью и без, так чтобы были заметны преимущества, поверю.
Хороший пример, что доступно с ссылочной-прозрачностью и IO - это как раз STM (Software transaction memory).

Классическая статья на эту тему:
https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/beautiful.pdf
источник

P

Pavel in rust_offtopic
Doge Shibu
Не из-за этого, а потому что там есть проверка на отмену задачи при аллокациях.

Поэтому отменить можно даже CPU-bound таск как нечего делать.
while(!done || Thread.interrupted()) {...}
источник

DF

Dollar Føølish in rust_offtopic
А кложа СТМ вроде без чистоты делала
источник

DF

Dollar Føølish in rust_offtopic
Это провальный подход?
источник