Add implicit functor arguments to the implicit environment. #18
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The current implementation has a small asymmetry between the arguments to implicit functors and the implicit arguments to functions:
This turns out to be slightly irritating in practice. Suppose you have a signature used to define various top-level implicits:
You'll typically want to use the top-level definitions when defining implicit functors, but they're not available by default:
Of course, you can always add explicit implicit bindings for the functor arguments at the top of the functor body. However, I'd expect wanting the arguments in the implicit environment to be the more common case by quite some way.
This pull request changes the semantics of implicit functors so that their arguments are added to the implicit environment, as with functions.
(All this is obviated by #12. If we take that route, the justification for binding implicit module arguments in the implicit environment is even clearer.)