Yeah, I somehow hadn't considered higher-order functions at all :/
almkglor had an interesting suggestion: view this idea in terms of pattern matching. When you see a function you see if it makes sense to apply it in the given context.
So in (map f list), the f would likely not apply to map, so it would be treated as an object.
That's an interesting idea too, and it looks like you're moving into a more fuzzy analog kind of system, not entirely unlike how JavaScript takes both operands into account with `+` so that 1 + "foo" returns "1foo"