Tình trạng đơn nguyên "giao diện"Tiếp tục đơn nguyên "giao diện"
class MonadState s m where
get :: m s
put :: s -> m()
(+ trở lại và ràng buộc) cho phép để xây dựng bất kỳ tính toán có thể với đơn nguyên nhà nước mà không sử dụng State
constructor. Ví dụ, State $ \s -> (s+1, s-1)
có thể được viết như
do s <- get
put (s-1)
return (s+1)
Tương tự, tôi không bao giờ phải sử dụng Reader
constructor, vì tôi có thể tạo ra mà tính toán sử dụng ask
, return
và (>>=)
. Chính xác: Reader f == ask >>= return . f
.
Đó có phải là cùng đúng đối với continuations - là nó có thể viết tất cả các trường hợp sử dụng Cont r a
callCC
(chức năng chỉ trong MonadCont
), trở lại và ràng buộc, và không bao giờ gõ một cái gì đó giống như Cont (\c -> ...)
?
Tuy nhiên, tôi hy vọng điều này sẽ thay đổi nếu bạn đã tiếp tục phân tách ... –