These lines of code and comments seem to suggest that there is some sort of real difference between extend-type and extend-protocol:
;; Or you can extend a protocol on a defrecord.
I wasn't sure, so I read up on them in the docs. The docs for extend-protocol state:
Useful when you want to provide several implementations of the same
protocol all at once. [...] Expands into calls to extend-type
So am I right in assuming that extend-protocol is but a convenience macro that always expands to extend-type calls? If so, the marked lines seem a little bit odd, as we're getting nothing out of using extend-protocol instead of extend-type for a single defrecord, the syntax just seems flipped around and it left me thinking there was a fundamental difference between the two.
https://github.com/swannodette/lt-cljs-tutorial/blob/master/lt-cljs-tutorial.cljs#L1335-L1355
These lines of code and comments seem to suggest that there is some sort of real difference between
extend-type
andextend-protocol
:I wasn't sure, so I read up on them in the docs. The docs for
extend-protocol
state:So am I right in assuming that
extend-protocol
is but a convenience macro that always expands toextend-type
calls? If so, the marked lines seem a little bit odd, as we're getting nothing out of usingextend-protocol
instead ofextend-type
for a single defrecord, the syntax just seems flipped around and it left me thinking there was a fundamental difference between the two.