Apply a function to a nested list

Say I have a list:

l = {{{a, b}, c}, d} 

I want to apply a function now, call it F to this list so as to go from the lowest to the highest level, that is to say


Is there a function in Mathematica that does exactly that?