Size: a a a

2021 January 04

DP

Dmitry Plesovskykh in Lisp Forever
автор пишет что могут быть проблемы с асинхронщиной (но не уточняет почему). есть вроде как решение - delimited continuations, но это уже не обычный call/cc
источник

SA

Sokolov Andrew in Lisp Forever
ну короче тогда пока все что я понял это что есть упомянутая мной проблема и еще какие то, непостижимые
для упомянутой решение по моему простое
источник

SA

Sokolov Andrew in Lisp Forever
не пишите так
источник

SA

Sokolov Andrew in Lisp Forever
для непостижимых проблема не могу ничего придумать)
источник

DP

Dmitry Plesovskykh in Lisp Forever
продолжение call/cc это такой гоуту из которого можно вернуться обратно с восстановлением контекста. но поведение открытых "ресурсов" AB. не знаю правильно ли я выразил свою мысль. кто тут шарит в CPS поправьте если что.
источник

DP

Dmitry Plesovskykh in Lisp Forever
чтобы не было UB - предлагается решение dynamic-wind, но оно плохо тем что ресурсы будут постоянно открываться и закрываться. что тоже не нужно зачастую.
источник

DP

Dmitry Plesovskykh in Lisp Forever
я хз как по-другому объеснить.
источник

DP

Dmitry Plesovskykh in Lisp Forever
вот что пишет автор cl-async по этому поводу:
источник

DP

Dmitry Plesovskykh in Lisp Forever
I wrote cl-async. I really missed continuations because any synchronous code that wants to use async basically has to be rewritten all the way up to accept async. This can be somewhat alleviated with promises, but it's still a rewrite no matter how you slice it.
Continuations would have solved this completely by allowing first-class green threads or coroutines or whatever the hell you want to call them. There's cl-cont, which is a horribly hacky syntax macro that converts all your code to CPS and, as I remember it, kind of sidesteps proper error handling altogether.

So, you can argue over which is better for error handling all you want, but I would have strangled a dolphin to have continuations/coroutines back when I was building out the async ecosystem stuff.
источник

V(

Vλadimir (Hawthorne ... in Lisp Forever
а если тип не рекомендовать использование call/cc в некоторых случаях это не катит?
источник

SA

Sokolov Andrew in Lisp Forever
я вот тоже не понимаю
источник

SA

Sokolov Andrew in Lisp Forever
в чем проблема
источник

DP

Dmitry Plesovskykh in Lisp Forever
я поэтому и задал изначально вопрос - кому тут нужны именно call/cc полноценные в CL. какие юзкейсы?
источник

SA

Sokolov Andrew in Lisp Forever
ты сам же и ответ написал
источник

DP

Dmitry Plesovskykh in Lisp Forever
асинхронщину, например, можно написать как просто внутреннюю реализацию (а не как возможность сделать ее в библиотеке), корутины итд итп. но это вроде как делает сам стандарт ограниченным
источник

DP

Dmitry Plesovskykh in Lisp Forever
есть делимитед-континуейшнс, возможно "их хватит всем"
источник

DP

Dmitry Plesovskykh in Lisp Forever
у меня мало опыта с этим всем, поэтому я не могу тут задвинуть экспертное мнение
источник

SA

Sokolov Andrew in Lisp Forever
я тоже
источник

SA

Sokolov Andrew in Lisp Forever
это и не только наше дело
источник

SA

Sokolov Andrew in Lisp Forever
поэтому я хочу это вынести на все коммьюнити
источник