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