Tôi thực sự đang vật lộn với việc hiểu callCC. Tôi có được sức mạnh của Continuations và tôi đã sử dụng khái niệm này trong một số dự án của mình để tạo ra các khái niệm hay. Nhưng tôi chưa bao giờ cần phải sử dụng thứ gì đó có khả năng lớn hơn cont :: ((a->r)->r)-> Cont r a
.
Sau khi sử dụng nó, rất có lý do tại sao họ gọi Cont Monad là mẹ của tất cả các đơn vị, YET, tôi không nhận được khi nào tôi cần sử dụng callCC
, và đó chính xác là câu hỏi của tôi.
reset
hoặc shift
. Tôi đã sử dụng nó để xác định một ngôn ngữ bị bỏ qua có thể bị đình chỉ cho đến khi một hành động nhất định được giải quyết bằng một quy trình khác, và sau đó nó tiếp tục với "tiếp tục" đã cho. Có thể tôi cho cảm giác có nhiều trải nghiệm với Cont Monad, nhưng thực sự không nhiều, tôi chỉ thực sự muốn hiểu callCC
Cont
như thế nào? Khi bạn nói rằng bạn không cần phải sử dụng thứ gì đó mạnh hơncont
, điều đó có nghĩa là bạn chưa sử dụngreset
hayshift
là gì?