[英]Continuation monad “interface”
狀態monad“接口”
class MonadState s m where
get :: m s
put :: s -> m ()
(+ return and bind)允許使用State monad構造任何可能的計算,而無需使用State
構造函數。 例如, State $ \\s -> (s+1, s-1)
可以寫為
do s <- get
put (s-1)
return (s+1)
同樣,我不必使用Reader
構造函數,因為我可以使用ask
, return
和(>>=)
創建該計算。 精確地: Reader f == ask >>= return . f
Reader f == ask >>= return . f
。
它是同真正的延續-是有可能寫的所有實例Cont ra
使用callCC
(唯一的功能MonadCont
)回報,並綁定,永不鍵入類似Cont (\\c -> ...)
我不這么認為。 查看類型:
Cont :: ((a -> r) -> r) -> Cont r a
callCC :: ((a -> Cont r b) -> Cont r a) -> Cont r a
如果您只有callCC
,那么在任何地方都不會使用r
作為類型-它可以是任何類型。 因此,我不知道如何翻譯將其用作類型的內容,例如:
Cont (const 42) :: Cont Int a
如果我只有callCC
就無法限制r
。
無論如何,這是我的預感。 並不十分嚴格,但似乎令人信服。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.