{"html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Fsirocco.hatenadiary.org%2Fentry%2F20111015%2F1318704448\" title=\"Parsec\u306b\u3061\u3087\u3063\u3068\u89e6\u3063\u3066\u307f\u308b(9): S\u5f0f\u3063\u307d\u3044\u8a08\u7b97\u6a5f  - sirocco \u306e\u66f8\u3044\u3066\u3082\u3059\u3050\u306b\u5fd8\u308c\u308b\u30e1\u30e2\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>","published":"2011-10-15 03:47:28","version":"1.0","image_url":null,"blog_title":"sirocco \u306e\u66f8\u3044\u3066\u3082\u3059\u3050\u306b\u5fd8\u308c\u308b\u30e1\u30e2","type":"rich","author_name":"sirocco","provider_name":"Hatena Blog","title":"Parsec\u306b\u3061\u3087\u3063\u3068\u89e6\u3063\u3066\u307f\u308b(9): S\u5f0f\u3063\u307d\u3044\u8a08\u7b97\u6a5f ","description":"Parsec, \u9ad8\u901f\u306a\u30b3\u30f3\u30d3\u30cd\u30fc\u30bf\u30d1\u30fc\u30b5 \u7df4\u7fd2\u306bS\u5f0f\u3063\u307d\u3044\u8a08\u7b97\u6a5f\u3092\u4f5c\u3063\u3066\u307f\u307e\u3057\u305f\u3002 import Text.ParserCombinators.Parsec import Data.List -- sexp\u306f'('\u3068')'\u306b\u56f2\u307e\u308c\u3066\u3044\u3066\u3001\"*/+-\"\u306e\u3069\u308c\u304b\u306e\u6b21\u306b\u30b9\u30da\u30fc\u30b9\u304c\u3042\u3063\u3066\u3001 -- \u30b9\u30da\u30fc\u30b9\u3067\u533a\u5207\u3089\u308c\u305fexpr\u304c\u3042\u308b\u3002 sexp :: Parser Double sexp = do char '(' op <- oneOf \"*/+-\" spaces s <- sepBy (many1 expr) spaces char ')' case op of '*' -> return $ fo\u2026","height":"190","width":"100%","provider_url":"https://hatena.blog","url":"https://sirocco.hatenadiary.org/entry/20111015/1318704448","categories":["Haskell"],"blog_url":"https://sirocco.hatenadiary.org/","author_url":"https://blog.hatena.ne.jp/sirocco/"}