{"categories":["\u6280\u8853","scala","cats"],"published":"2023-03-04 02:53:56","height":"190","author_url":"https://blog.hatena.ne.jp/Windymelt/","provider_name":"Hatena Blog","author_name":"Windymelt","description":"\u3068\u308a\u3042\u3048\u305a\u4f55\u304b\u3092\u899a\u3048\u305f\u3089fizzbuzz\u306b\u3059\u308b\u30af\u30bb\u3084\u3081\u305f\u3044 import cats.syntax.all._ import cats.implicits._ extension (d: Int) def ~>(s: String)(n: Int) = (n % d == 0).guard[Option] as s val fizzbuzz = (((2 ~> \"fizz\" &&& 3 ~> \"buzz\") >>> (_.toList.combineAll)) &&& (_.toString)) >>> { case (fb, n) => fb.getOrElse(n) } 1 to 50 ma\u2026","version":"1.0","blog_url":"https://blog.3qe.us/","type":"rich","image_url":"https://cdn-ak.f.st-hatena.com/images/fotolife/W/Windymelt/20230304/20230304025308.png","blog_title":"Lambda\u30ab\u30af\u30c6\u30eb","provider_url":"https://hatena.blog","url":"https://blog.3qe.us/entry/2023/03/04/025356","width":"100%","html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Fblog.3qe.us%2Fentry%2F2023%2F03%2F04%2F025356\" title=\"Scala: Cats\u306eArrow\u3092\u899a\u3048\u305f\u306e\u3067fizzbuzz\u306b\u3059\u308b - Lambda\u30ab\u30af\u30c6\u30eb\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>","title":"Scala: Cats\u306eArrow\u3092\u899a\u3048\u305f\u306e\u3067fizzbuzz\u306b\u3059\u308b"}