Slide 3
Slide 3 text
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)))