Scalazやshapelessや猫などの関数型なライブラリを中心に話す。もしくは https://gitter.im/scalajp/public では話すべきではない上級者向けな話をするところ?
Month.of(x).maxLength
Month.of(x).length(Year.of(y).isLeap)
type R[A] = Reader[A, Account]
type R[A] = Reader[Account, A]
あざす。https://gist.github.com/j5ik2o/e99968bcdbe5d3555ad7
書き換えてみた。だいたいやりたいことができた。もうちょっと勉強します
type T[B, C, D] = Kleisli[A \/ D, B, C] List.empty[T[B, C, ?]].sequenceU
type A = List[?] type B = List type C[E] = List[E] Functor[A] // NG Functor[B] // NG Functor[C] // OK
(*->*)