empty?() をオーバーライドすれば 0 | 1 とかもできるようになる
empty? は protected
Applicative は Category 使ってない。
->(o, x, y){} * a * b で x には aの結果、 y には b の結果が入る