检查Aplicative实现是否适合Cont

时间:2019-03-24 13:51:55

标签: haskell monads

我试图了解Haskell中的Cont,因此我为此实现了FunctorApplicativeMonad

我将Cont定义为newtype Cont r a = Cont {runCont :: (a -> r) -> r}

现在,我尝试实现<*>

我想实现是

Cont func <*> Cont value = (\r -> value (\a -> func (\c -> r (c a))))

但是在MTL Cont func <*> Cont value = Cont (\r -> func (\f -> value (\ a -> r (f a) )))中发现了该实现。

现在我的问题是:我该如何证明自己的认识是正确的? 我认为可以证明Applicative的法律,但对我来说,这显然不是怎么做。

0 个答案:

没有答案