Idea: align predicate and base schemas #1092
Draft
+68
−16
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.
It might reduce confusion between e.g.,
int?
and:int
if we define one in terms of the other via-proxy-schema
.I realize the point of the the predicates is to look like spec predicates, but it's an easy mistake to make to think
:any
andany?
are synonymous. A better example: forint?
it's not obvious it doesn't support:min/max
properties.Another advantage of using proxies here is we can reduce the implementation burden on multimethods that dispatch on
m/type
. Instead of adefmethod
for:any
andany?
, you could have adefmethod :any
and in the default method recur viam/deref
to catch the:any
case.It's convenient to proxy things like
map?
as[:map-of :any :any]
, I think all current children can stay the same.This is just a sketch and I have no idea why the test fail.