I think it depends. Perhaps the core library actually best illustrates this. If you look at the examples you provided:
(take n coll) (drop n coll)
In both cases, the semantically most important is how many elements you accept / discard.
In the case of something like (get coll n) there is semantics from left to right, first having a collection, before having the index with which to extract. I think nth the same in this regard. Note that there are other ways to get indexed items from the collection - for example, you can also just do this:
(coll n)
This works because clojure data structures such as vector , hash-map and set can act as functions. IMO, this is a more confusing way to accomplish the same thing, which is often harder to read and does not show intentions almost as clearly as (get coll n) .
In the end, I think the most intuitive meaning for the caller is probably the best and will make your code the most readable / supported by future users of your code.
There are other considerations. For example, options for using variable arguments (for example, using & more ), where you will need the necessary arguments to prevent ambiguity in the first place. However, I would still consider readability, since the functions of variable arguments can have their own readability problems. See this wonderful post from Stuart Sierra that talks about it.
source share