Working our way backwards from solution to problem, we define an applicative functor, then use it to apply a function of multiple arguments.
I've found slightly different signature of
lift over the internet here.
The most 'confusing' part is not a signature of
lift itself as its only matter of currying here, but the more interesting question comes when looking at the signature of lifted function. Yours comes uncurried and the other one is curried.
I'm struggling with the concept itself and would like to debug this to the atoms (and gonna do this with both approaches), just wondering about your opinion on the matter. I guess the form of those is not really that much relevant as its the idea which matters.
OTOH I see the whole functional programming as the universal contract on the ideas between languages and in that case it matters which one is more 'correct'.