fact: Fixpoint apply (ls : list Type) R {struct ls} : ftype ls R -> tuple ls -> R := match ls as ls return ftype ls R -> tuple ls -> R with | nil => fun f _ => f | cons l ls => fun f t => @apply ls R (f (fst t)) (snd t) end.
imports: ExtLib.Structures.Monad