{"blog_title":"\u3081\u3082\u3081\u3082","blog_url":"https://enakai00.hatenablog.com/","author_url":"https://blog.hatena.ne.jp/enakai00/","categories":[],"type":"rich","description":"\u304a\u3082\u3080\u308d\u306b\u30fb\u30fb\u30fb \u524d\u56de\u306b\u7d9a\u3044\u3066\u3001Continuation Monad\u3068\u7d44\u307f\u5408\u308f\u305b\u3066\u4f7f\u7528\u3059\u308b\u3001\u95a2\u6570callCC\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002\u524d\u56de\u4f5c\u6210\u3057\u305fCont\u578b\uff08Continuation Monad\uff09\u3068\u95a2\u6570pythagoras2\u3092\u518d\u63b2\u3057\u307e\u3059\u3002cps.hs newtype Cont r a = Cont { runCont :: (a -> r) -> r } instance Monad (Cont r) where return x = Cont (\\k -> k x) m >>= f = Cont (\\k -> runCont m (\\x -> runCont (f x) k)) infixr 5 =: \u2026","height":"190","provider_url":"https://hatena.blog","html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Fenakai00.hatenablog.com%2Fentry%2F20121013%2F1350131987\" title=\"Haskell\u306eContinuation Monad\u3092\u7406\u89e3\u3059\u308b(2) - \u3081\u3082\u3081\u3082\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>","author_name":"enakai00","version":"1.0","provider_name":"Hatena Blog","url":"https://enakai00.hatenablog.com/entry/20121013/1350131987","image_url":null,"published":"2012-10-13 21:39:47","title":"Haskell\u306eContinuation Monad\u3092\u7406\u89e3\u3059\u308b(2)","width":"100%"}