覚えておきたいのでメモ。
x <$ guard (y == z)
こういう式をCatsで表現したいとき、Catsには<$も$>も、そのままの演算子では存在しない。そのかわり、Catsにはasという名前で同等のメソッドがある。
F[A] => B => F[B] as
つまりこういう感じに書くことができる。
(y == z).guard[Option].as(x)
これがF[A] => F[B] => F[B]になった場合は、Haskell同様に*>が使える(同様に、<*も使える)。