For example:
(map f ls reverse: #t foo: 42)
Here, `f' shall be called with the list item and the keyword argument
`foo:' bound to `42'. However, how can `map' whether to pass down a
keyword argument `reverse:' to `foo:' or whether to change its own
behavior?
I've already answerd to such case, but allow me to repeat.
It is your map's API that you "reserve" reverse: keyword. If you want to allow arbitrary keyword arguments
to be passed to f, you let map take, for example, extra-keywords: argument, which takes keyword-value
list to be passed to 'f'.
By the way, this reverse: is a good example of my point. You developed (your map) library
with reverse: keyword, and export map and reverse:.
Now, suppose I develop (my scan) library, which maps f over each pair in the spine of the list.
And I added reverse: keyword argument which returns the result reversed; it is a natural choice
even I don't know about (your map) library.
A user finds your map and my scan both takes reverse: keyword and wanted to abstract it.
But alas, two revese:'s are different identifiers. So he ask you and me to rewrite our libraries
to share reverse: keyword from a common library. Where to put such common library and
who'll maintain it? Well, the user don't care, and you and I have to talk to resolve it.
I anticipate this scenario to be very common. Will this scale?