If you've ever wondered what people who program in a functional language mean when they say "partially applied function" then I wrote a blog that I hope helps give the answer.
Not sure if you're planning to follow this up with a look at currying, but here's my take on using curried functions to get rid of all those place-holders:
Strictly speaking, some of those functions could be function values, but I'm trying to keep it simple, as you did!