s/protocol uses clojure.core/satisfies?:
|
{:proto-pred #(satisfies? ~p %) |
In turn, satisfies? does not honor metadata-based protocol implementation: https://dev.clojure.org/jira/browse/CLJ-2426
metadata-based protocol implementation is a fine tool that can solve a variety of problems. Having s/protocol fail on it is very inconvenient.
You may find inspiration for a drop-in replacement for satisfies? here.
Thanks - V