Tuple addition in pointfree What is the shortest way we can express the function

f(a,b)(c,d)=(a+c,b+d)


in point-free notation?

pointfree.io gives us 

uncurry (flip flip snd . (ap .) . flip flip fst . ((.) .) . (. (+)) . flip . (((.) . (,)) .) . (+))


which with a little bit of work can be shortened to

uncurry$(`flip`snd).((&lt;*&gt;).).(`flip`fst).((.).).(.(+)).flip.(((.).(,)).).(+)


for 76 bytes.  But this still seems really long and complex for such a simple task.  Is there any way we can express pairwise addition as a shorter point-free function?

To be clear by what I mean by point-free,  a point-free declaration of a function involves taking existing functions and operators and applying them to each other in such a way that the desired function is created.  Backticks, parentheses and literal values ([],0,[1..3], etc.) are allowed but keywords like where and let are not.  This means:


You may not assign any variables/functions
You may not use lambdas
You may not import


Here is the same question when it was a CMC
44 bytes
Got this from \x y -&gt; (fst x + fst y, snd x + snd y)

(&lt;*&gt;).((,).).(.fst).(+).fst&lt;*&gt;(.snd).(+).snd

Try it online!
Or, 42 bytes using do:
do a&lt;-fst;((,).(a+).fst&lt;*&gt;).(.snd).(+).snd

Try it online!