{"published":"2020-05-06 19:12:00","description":"\u578b\u3092\u305d\u3048\u3066. TL; DR (\u5b9f\u7528\u306b\u306f\u5411\u304b\u306a\u3044\u3082\u306e\u306e) TypeScript \u3067 Algebraic Effects (\u305f\u3076\u3093) \u3092\u6271\u3046\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f5c\u3063\u3066\u307f\u307e\u3057\u305f. github.com \u80cc\u666f\u3068\u8ab2\u984c \u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u5730\u7344\u306e\u89e3\u6c7a \u305f\u3068\u3048\u3070 Haskell \u3084 Scala \u306b\u3042\u308b\u3088\u3046\u306a Either \u30e2\u30ca\u30c9\u3092, TypeScript \u3067\u3082\u4f7f\u3044\u305f\u3044\u3068\u3057\u307e\u3059. \u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306f\u5927\u96d1\u628a\u306b\u306f\u3053\u3046\u3044\u3046\u611f\u3058 (\u5fc5\u8981\u306a\u90e8\u5206\u306e\u307f\u629c\u7c8b): interface Either<L, R> { bind<R2>(k: (x: R) => Either<L, R2>): Either<L, R2>; } declare fu\u2026","width":"100%","author_name":"susisu","image_url":null,"categories":["TypeScript","\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0"],"html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Fsusisu.hatenablog.com%2Fentry%2F2020%2F05%2F06%2F191200\" title=\"TypeScript \u3067 Algebraic Effects - Object.create(null)\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>","type":"rich","blog_url":"https://susisu.hatenablog.com/","url":"https://susisu.hatenablog.com/entry/2020/05/06/191200","provider_name":"Hatena Blog","title":"TypeScript \u3067 Algebraic Effects","blog_title":"Object.create(null)","provider_url":"https://hatena.blog","height":"190","author_url":"https://blog.hatena.ne.jp/susisu/","version":"1.0"}