Não consigo entender o que é "lift" no Ramda.js

Olhando a fonte do Ramda.js, especificamente a função "lift".

lift

liftN

Aqui está o exemplo dado:

var madd3 = R.lift(R.curry((a, b, c) => a + b + c));

madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7]

Portanto, o primeiro número do resultado é fácil,a, bec, são todos os primeiros elementos de cada matriz. O segundo não é tão fácil para mim entender. Os argumentos são o segundo valor de cada matriz (2, 2, indefinido) ou é o segundo valor da primeira matriz e os primeiros valores da segunda e terceira matriz?

Mesmo desconsiderando a ordem do que está acontecendo aqui, eu realmente não vejo o valor. Se eu executar isso semliftprimeiro eu vou acabar com as matrizesconcatcomo strings. Isso parece estar funcionando comoflatMap mas parece que não consigo seguir a lógica por trás disso.

questionAnswers(3)

yourAnswerToTheQuestion