(fully-satisfies? p v)
Returns true if value v extends protocol p and implements every method in protocol p, otherwise false.
A value is considered to 'extend' protocol p either if:
Note that fully-satisfies? aims to be deterministic even in cases where protocol dispatch is non-deterministic, and so may be innaccurate in those cases.
In cases of multiple-inheritance of interfaces, fully-satisfies? will pick
an implementation by sorting the supers
of the target object by name
and finding the first interface (from left to right) that implements
the protocol. Then, if it finds any more-specific interfaces (ie.,
sub-interfaces) of this interface in the target class hierarchy, it will pick
that interface's implementation (and apply this algorithm to a fixed point).
See also:
Returns true if value v extends protocol p and implements every method in protocol p, otherwise false. A value is considered to 'extend' protocol p either if: - p implements the protocols interface, or - p extends the protocol via clojure.core/extend, or - p implements at least one method via metadata if supported by the protocol Note that fully-satisfies? aims to be deterministic even in cases where protocol dispatch is non-deterministic, and so may be innaccurate in those cases. In cases of multiple-inheritance of interfaces, fully-satisfies? will pick an implementation by sorting the `supers` of the target object by name and finding the first interface (from left to right) that implements the protocol. Then, if it finds any more-specific interfaces (ie., sub-interfaces) of this interface in the target class hierarchy, it will pick that interface's implementation (and apply this algorithm to a fixed point). See also: - https://clojure.atlassian.net/browse/CLJ-2656 - https://clojure.atlassian.net/browse/CLJ-1807
(partially-satisfies? p v)
Returns true if value v extends protocol p, otherwise false.
A value is considered to 'extend' protocol p either if:
Returns true if value v extends protocol p, otherwise false. A value is considered to 'extend' protocol p either if: - p implements the protocols interface, or - p extends the protocol via clojure.core/extend, or - p implements at least one method via metadata if supported by the protocol
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close