Я действительно очень борюсь с пониманием callCC. Я получаю силу от Continuations и использую концепцию в некоторых своих проектах для создания классных концепций. Но мне никогда не приходилось использовать что-то с большими возможностями, чем cont :: ((a->r)->r)-> Cont r a
.
После его использования становится понятным, почему они называют Cont Monad матерью всех монад, ДА, я не понимаю, когда мне нужно будет использовать callCC
, и это точно мой вопрос.
reset
или shift
. Я использовал его, чтобы определить внедренный язык, который можно приостановить до тех пор, пока данное действие не будет разрешено другим процессом, а затем он возобновится с заданным «продолжением». Может быть, у меня сложилось впечатление, что у меня большой опыт работы с Cont Monad, но на самом деле не так много, я просто очень хочу понять callCC
Cont
? Когда вы говорите, что вам не нужно использовать что-то более мощноеcont
, значит ли это, что вы не использовалиreset
илиshift
то и другое?