{"categories":["OCaml","\u8a00\u8a9e\u51e6\u7406\u7cfb"],"image_url":null,"blog_title":"Arantium Maestum","type":"rich","version":"1.0","author_name":"zehnpaard","width":"100%","title":"OCaml\u3067Monadic Parser\u3092\u4f5c\u3063\u3066\u307f\u308b\uff08\u5f8c\u7de8\uff09","description":"\u524d\u56de\u306b\u7d9a\u3044\u3066Monadic Parser Combinator\u3092\u5b9f\u88c5\u3057\u3066\u3044\u304f\u3002 \u518d\u5e30 OCaml\u306e\u3088\u3046\u306a\u5148\u884c\u8a55\u4fa1\u306e\u8a00\u8a9e\u3067Monadic Parser\u306e\u5b9a\u7fa9\u306b\u518d\u5e30\u3092\u4f7f\u3046\u3068\u554f\u984c\u306b\u306a\u308b\u5834\u5408\u3068\u306a\u3089\u306a\u3044\u5834\u5408\u304c\u3042\u308b\u305e\u3044\u3002 \u554f\u984c\u306b\u306a\u3089\u306a\u3044\u5834\u5408\uff1a let match_string s = let rec f = function [] -> pure [] | c::cs -> let* _ = match_char c and* _ = f cs in pure (c::cs) in String.to_list s |> f |> map String.of_list \u3042\u308b\u6587\u5b57\u5217\u304c\u30d1\u30fc\u30b9\u5bfe\u8c61\u306e\u5148\u982d\u306b\u3042\u308b\u304b\u2026","url":"https://zehnpaard.hatenablog.com/entry/2019/07/05/114608","provider_name":"Hatena Blog","provider_url":"https://hatena.blog","author_url":"https://blog.hatena.ne.jp/zehnpaard/","published":"2019-07-05 11:46:08","height":"190","blog_url":"https://zehnpaard.hatenablog.com/","html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Fzehnpaard.hatenablog.com%2Fentry%2F2019%2F07%2F05%2F114608\" title=\"OCaml\u3067Monadic Parser\u3092\u4f5c\u3063\u3066\u307f\u308b\uff08\u5f8c\u7de8\uff09 - Arantium Maestum\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>"}