2013-06-11

juan_gandhi: (VP)
2013-06-11 01:12 pm

planet's funniest code

src
def validate[F[_], G, H, V <: HList, I <: HList, M <: HList, A <: HList, R]
  (g: G)(v: V)(implicit
  hlG: FnHListerAux[G, A => R],
  zip: ZipApplyAux[V, I, M],
  mapped: MappedAux[A, F, M],
  unH: FnUnHListerAux[I => F[R], H],
  folder: LeftFolderAux[M, F[A => R], applier.type, F[HNil => R]],
  appl: Applicative[F]
) = unH((in: I) => folder(zip(v, in), hlG(g).point[F]).map(_(HNil)))


(скалу выучили, а как программировать, не выучили)

actually, it makes a lot of sense, like here:

val validateFoo = validate(Foo.apply _)(checkA :: checkB :: checkC :: HNil)