<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Clojure Q&amp;A - Recent activity in Protocols</title>
<link>https://ask.clojure.org/index.php/activity/clojure/protocols</link>
<description></description>
<item>
<title>Commented: Should reduce-kv support String?</title>
<link>https://ask.clojure.org/index.php/15109/should-reduce-kv-support-string?show=15114#c15114</link>
<description>i agree that it matching nth would be the most consistent.</description>
<category>Protocols</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/15109/should-reduce-kv-support-string?show=15114#c15114</guid>
<pubDate>Mon, 01 Jun 2026 00:49:45 +0000</pubDate>
</item>
<item>
<title>Commented: satisfies? doesn't work with the new instance-based protocol polymorphism</title>
<link>https://ask.clojure.org/index.php/4622/satisfies-doesnt-work-instance-based-protocol-polymorphism?show=13665#c13665</link>
<description>Ran into this yesterday.</description>
<category>Protocols</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/4622/satisfies-doesnt-work-instance-based-protocol-polymorphism?show=13665#c13665</guid>
<pubDate>Tue, 06 Feb 2024 16:08:12 +0000</pubDate>
</item>
<item>
<title>Hypergraphs, via protocols, perhaps extending loom?</title>
<link>https://ask.clojure.org/index.php/13444/hypergraphs-via-protocols-perhaps-extending-loom</link>
<description>&lt;p&gt;I am exploring clojure implementations of hypergraphs (edges can join &amp;gt; 2 nodes)?  i've used &lt;a rel=&quot;nofollow&quot; href=&quot;https://cljdoc.org/d/aysylu/loom&quot;&gt;loom&lt;/a&gt;  for graphs, and imagine trying to extend it somehow.  &lt;/p&gt;
&lt;p&gt;either with loom or without, any suggestions how to use PROTOCOLS for these definitions?&lt;/p&gt;
&lt;p&gt;thanks for any suggestions.  - RIk&lt;/p&gt;
</description>
<category>Protocols</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/13444/hypergraphs-via-protocols-perhaps-extending-loom</guid>
<pubDate>Thu, 09 Nov 2023 02:41:39 +0000</pubDate>
</item>
<item>
<title>Retagged: Allow clojure.core/extend to take a regular map as proto+mmaps parameter (today it's just &quot;kwargs&quot;)</title>
<link>https://ask.clojure.org/index.php/12752/clojure-extend-regular-proto-mmaps-parameter-today-kwargs?show=12752#q12752</link>
<description>&lt;p&gt;Often, when you call clojure.core/extend directly (vs extend-type, extend-proto or inline definitions), that means you have some level of composition that happened upstream to create proto extensions for a type. &lt;/p&gt;
&lt;p&gt;To recap today the signature of extend is as follows:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;([atype &amp;amp; proto+mmaps])
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Meaning when it's called it looks like &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(extend t protoA {...} protoB {...})
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I am advocating to just changing it to &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;([atype &amp;amp; {:as proto+mmaps}])
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That would allow somebody calling into extend to pass either an &quot;unrolled&quot; map like today, or a regular map to it (leveraging the recent patch from @fogus).&lt;/p&gt;
&lt;p&gt;(extend t {protoA {...} protoB {...}}) and (extend t protoA {...} protoB {...}) would be supported. &lt;/p&gt;
&lt;p&gt;The alternative today when you have a proto+mmaps that is the result of merging implementations is to do something akin to:&lt;/p&gt;
&lt;p&gt;(apply extend t (into [] cat proto+mmaps))&lt;/p&gt;
&lt;p&gt;the patch would allow to do things such as:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(extend t (merge proto-impl-a proto-impl-b proto-impl-c ...))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I am happy to provide a patch for this if that's considered to be an acceptable change.&lt;/p&gt;
</description>
<category>Protocols</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12752/clojure-extend-regular-proto-mmaps-parameter-today-kwargs?show=12752#q12752</guid>
<pubDate>Tue, 18 Jul 2023 13:37:19 +0000</pubDate>
</item>
<item>
<title>Answer selected: Would it make sense to have a flag to cache protocol implementation lookups?</title>
<link>https://ask.clojure.org/index.php/11801/would-make-sense-have-cache-protocol-implementation-lookups?show=11802#a11802</link>
<description>&lt;p&gt;I think a proposal for a caching scheme would be welcomed. I'll log a ticket as a place to discuss further in a bit.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Looking a bit it seems that there are a couple of tickets that look to address &lt;code&gt;satisfies?&lt;/code&gt;, the first being &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/CLJ-1814&quot;&gt;https://clojure.atlassian.net/browse/CLJ-1814&lt;/a&gt; which seems to rely on a solution for &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/CLJ-2426&quot;&gt;https://clojure.atlassian.net/browse/CLJ-2426&lt;/a&gt;. Both seem to have quite a bit of discussion around them.&lt;/p&gt;
</description>
<category>Protocols</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11801/would-make-sense-have-cache-protocol-implementation-lookups?show=11802#a11802</guid>
<pubDate>Mon, 25 Apr 2022 13:48:38 +0000</pubDate>
</item>
<item>
<title>Answer selected: Should extenders also list types that extend a protocol via deftype?</title>
<link>https://ask.clojure.org/index.php/11680/should-extenders-also-list-types-that-extend-protocol-deftype?show=11684#a11684</link>
<description>&lt;p&gt;This matches the docstring for &lt;code&gt;extenders&lt;/code&gt; - &quot;Returns a collection of the types explicitly extending protocol', I think here &quot;explicitly extending&quot; refers to types that have been extended via extend-type or extend-protocol or extend. The three mechanisms of extension are sometimes referred to as &quot;external&quot; (or &quot;explicit&quot;), &quot;direct&quot; (deftype / defrecord / reify), and &quot;metadata&quot;, see &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.org/reference/protocols&quot;&gt;https://clojure.org/reference/protocols&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So, not a bug.&lt;/p&gt;
</description>
<category>Protocols</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11680/should-extenders-also-list-types-that-extend-protocol-deftype?show=11684#a11684</guid>
<pubDate>Sun, 27 Mar 2022 14:56:46 +0000</pubDate>
</item>
<item>
<title>Closed: defprotocol doesn't resolve tag classnames</title>
<link>https://ask.clojure.org/index.php/4242/defprotocol-doesnt-resolve-tag-classnames?show=4242#q4242</link>
<description>&lt;p&gt;defprotocol doesn't resolve tag classnames, this results in exceptions being thrown when the declared protocol uses as a tag an imported class that is not imported in the namespace that uses it.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;user=&amp;gt; (import 'clojure.lang.ISeq)
clojure.lang.ISeq
user=&amp;gt; (defprotocol p (^ISeq f [_]))
p
user=&amp;gt; (ns x)
nil
x=&amp;gt; (defn x [y] (let [z (user/f y)] (inc z)))
CompilerException java.lang.IllegalArgumentException: Unable to resolve classname: ISeq, compiling:(NO_SOURCE_PATH:4:33) &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Patch:&lt;/strong&gt; clj-1180-2.patch&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Screened by:&lt;/strong&gt; Alex Miller&lt;br&gt;
- My only hesitancy with this patch is making the tagToClass public and reaching into it from core_deftype - this means that call into the Compiler needs to remain open forever as an api.&lt;/p&gt;
</description>
<category>Protocols</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/4242/defprotocol-doesnt-resolve-tag-classnames?show=4242#q4242</guid>
<pubDate>Wed, 02 Feb 2022 21:54:10 +0000</pubDate>
</item>
<item>
<title>Comment edited: When does a metadata protocol extension get chosen?</title>
<link>https://ask.clojure.org/index.php/11085/when-does-a-metadata-protocol-extension-get-chosen?show=11108#c11108</link>
<description>There seems to be one strange corner case that isn't (explicitly) covered by the docs: a metadata impl does not win if the protocol is directly implemented but the direct impl is not provided.&lt;br /&gt;
&lt;br /&gt;
Clojure 1.10.3&lt;br /&gt;
user=&amp;gt; (defrecord MissingDirect [] A)&lt;br /&gt;
user.MissingDirect&lt;br /&gt;
user=&amp;gt; (foo (with-meta (-&amp;gt;MissingDirect) {`foo (fn [_] :meta)}))&lt;br /&gt;
Execution error (AbstractMethodError) at user/eval208 (REPL:1).&lt;br /&gt;
Receiver class user.MissingDirect does not define or inherit an implementation of the resolved method 'abstract java.lang.Object foo()' of interface user.A.&lt;br /&gt;
&lt;br /&gt;
OTOH, if a metadata impl is missing, it defaults to the extends impl. The current wording of the docs doesn't seem to make this discrepancy obvious (but clearly this is all to preserve the fast path).</description>
<category>Protocols</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11085/when-does-a-metadata-protocol-extension-get-chosen?show=11108#c11108</guid>
<pubDate>Mon, 27 Sep 2021 20:51:53 +0000</pubDate>
</item>
<item>
<title>Protocol dispatch via interfaces is nondeterministic</title>
<link>https://ask.clojure.org/index.php/11075/protocol-dispatch-via-interfaces-is-nondeterministic</link>
<description>&lt;p&gt;If an object is an instance of multiple (unrelated) interfaces that each extend a protocol, the dispatched method will be chosen at random.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(defn reproduce []
  (eval 
    (list 'do
          (list 'ns (gensym))
          '(do (definterface A)
               (definterface B)

               (defprotocol P
                 (a [this]))

               (extend-protocol P
                 A
                 (a [this] :a)
                 B
                 (a [this] :b))
               (a (reify A B))))))

(frequencies
  (repeatedly 100 reproduce))
;=&amp;gt; {:b 52, :a 48}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;One solution is to sort interfaces by name before choosing the implementation, so at least the nondeterminism is eliminated. We could go further and also print a warning in this case.&lt;/p&gt;
&lt;p&gt;Logged as: &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/CLJ-2656&quot;&gt;https://clojure.atlassian.net/browse/CLJ-2656&lt;/a&gt;&lt;/p&gt;
</description>
<category>Protocols</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11075/protocol-dispatch-via-interfaces-is-nondeterministic</guid>
<pubDate>Tue, 21 Sep 2021 19:25:07 +0000</pubDate>
</item>
<item>
<title>Answered: Type annotation on protocol causes runtime casting exception</title>
<link>https://ask.clojure.org/index.php/11065/type-annotation-protocol-causes-runtime-casting-exception?show=11070#a11070</link>
<description>&lt;p&gt;If you want primitive types, use definterface.&lt;/p&gt;
</description>
<category>Protocols</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11065/type-annotation-protocol-causes-runtime-casting-exception?show=11070#a11070</guid>
<pubDate>Mon, 20 Sep 2021 15:12:32 +0000</pubDate>
</item>
<item>
<title>Answered: Changing repl formatting function for a type</title>
<link>https://ask.clojure.org/index.php/10049/changing-repl-formatting-function-for-a-type?show=10050#a10050</link>
<description>&lt;p&gt;You can supply a new &lt;code&gt;print-method&lt;/code&gt; / &lt;code&gt;print-dup&lt;/code&gt; for clojure.lang.Atom, something like:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(defmethod print-method clojure.lang.Atom [obj ^java.io.Writer w] 
  (.write w &quot;#atom&quot;))
&lt;/code&gt;&lt;/pre&gt;
</description>
<category>Protocols</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10049/changing-repl-formatting-function-for-a-type?show=10050#a10050</guid>
<pubDate>Wed, 13 Jan 2021 22:21:16 +0000</pubDate>
</item>
<item>
<title>Commented: Better stacktraces for protocol methods</title>
<link>https://ask.clojure.org/index.php/9775/better-stacktraces-for-protocol-methods?show=9789#c9789</link>
<description>You can name the functions using extend directly already, so that really shouldn't be an issue I believe</description>
<category>Protocols</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/9775/better-stacktraces-for-protocol-methods?show=9789#c9789</guid>
<pubDate>Fri, 13 Nov 2020 02:36:45 +0000</pubDate>
</item>
<item>
<title>Answered: Where does one place a nav function when implementing Navigable protocol?</title>
<link>https://ask.clojure.org/index.php/9073/where-does-place-function-implementing-navigable-protocol?show=9074#a9074</link>
<description>&lt;p&gt;You would add the metadata containing &lt;code&gt;clojure.datafy/nav&lt;/code&gt; as the key (and your &lt;code&gt;nav&lt;/code&gt; function as the value) to the collection that would be passed to &lt;code&gt;nav&lt;/code&gt;, i.e., the nested maps.&lt;/p&gt;
&lt;p&gt;It's worth thinking about the full context tho' (for REBL and other tools that use &lt;code&gt;datafy&lt;/code&gt; and &lt;code&gt;nav&lt;/code&gt;): you start out with &quot;stuff&quot; that is first &lt;code&gt;datafy&lt;/code&gt;'d by those tools to produce &quot;pure data&quot; that can be navigated via &lt;code&gt;get&lt;/code&gt; etc and also via &lt;code&gt;nav&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;So you go from &quot;stuff&quot; -&amp;gt; &lt;code&gt;datafy&lt;/code&gt; -&amp;gt; &quot;pure data&quot; (plus &lt;code&gt;nav&lt;/code&gt; metadata).&lt;/p&gt;
&lt;p&gt;Then from &quot;pure data&quot; -&amp;gt; &lt;code&gt;get&lt;/code&gt; -&amp;gt; &quot;new pure data&quot;, or from &quot;pure data&quot; -&amp;gt; &lt;code&gt;nav&lt;/code&gt; -&amp;gt; &quot;new stuff corresponding to new pure data&quot;.&lt;/p&gt;
&lt;p&gt;So you might want to start out with your map supporting &lt;code&gt;datafy&lt;/code&gt; metadata so that when REBL etc datafies it, the result is navigable -- and could be augmented with additional keys and/or metadata as part of the datafication for display in REBL etc.&lt;/p&gt;
&lt;p&gt;If you start with pure data (with &lt;code&gt;nav&lt;/code&gt; metadata), calling &lt;code&gt;datafy&lt;/code&gt; on it should be an identity function so you &lt;em&gt;could&lt;/em&gt; just add &lt;code&gt;nav&lt;/code&gt; metadata to the original map. I personally think it's better to start with &lt;code&gt;datafy&lt;/code&gt; metadata (and have the implementation add the &lt;code&gt;nav&lt;/code&gt; metadata) so that the stuff -&amp;gt; &lt;code&gt;datafy&lt;/code&gt; -&amp;gt; data -&amp;gt; &lt;code&gt;nav&lt;/code&gt; -&amp;gt; new-stuff pattern is more explicit. That's the approach I took in &lt;code&gt;clojure.java.jdbc&lt;/code&gt; and &lt;code&gt;next.jdbc&lt;/code&gt; -- and I &lt;a rel=&quot;nofollow&quot; href=&quot;https://corfield.org/blog/2018/12/03/datafy-nav/&quot;&gt;blogged about &lt;code&gt;datafy&lt;/code&gt;/&lt;code&gt;nav&lt;/code&gt;&lt;/a&gt; in December 2018.&lt;/p&gt;
</description>
<category>Protocols</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/9073/where-does-place-function-implementing-navigable-protocol?show=9074#a9074</guid>
<pubDate>Wed, 05 Feb 2020 01:15:53 +0000</pubDate>
</item>
<item>
<title>Commented: What is an order of protocol methods lookup in protocol implementation for types having subclass relationship</title>
<link>https://ask.clojure.org/index.php/8691/protocol-protocol-implementation-subclass-relationship?show=8701#c8701</link>
<description>Hi, Sean!&lt;br /&gt;
HoneySQL is a great, compact and minimal. It's a great *physical* pleasure for me to read and tinker it :) &lt;br /&gt;
Also I didn't play with your next.jdbc but it's definitely in my plans.&lt;br /&gt;
&lt;br /&gt;
My task is following: &lt;br /&gt;
I need to batch several insert honey sql commands which have same metadata shape (table and columns) into single jdbc/execute! call.&lt;br /&gt;
Ex:&lt;br /&gt;
1. {:insert-into [:my-table]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:values [{:col1 &amp;quot;str1&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:col2 &amp;quot;str2&amp;quot;}]}&lt;br /&gt;
2. {:insert-into [:my-table]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:values [{:col1 &amp;quot;str1&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:col2 nil}]} &amp;lt;--------- here we have nil value&lt;br /&gt;
&lt;br /&gt;
honey sql gives me:&lt;br /&gt;
1. &amp;quot;insert into &amp;quot;my-table&amp;quot; (&amp;quot;col1&amp;quot;,&amp;quot;col2&amp;quot;) VALUES (?, ?)&amp;quot; &amp;nbsp;[&amp;quot;str1&amp;quot; &amp;quot;str2&amp;quot;]&lt;br /&gt;
2. &amp;quot;insert into &amp;quot;my-table&amp;quot; (&amp;quot;col1&amp;quot;,&amp;quot;col2&amp;quot;) VALUES (?, NULL)&amp;quot; &amp;nbsp;[&amp;quot;str1&amp;quot;] &amp;nbsp;&amp;nbsp;&amp;lt;----- NULL is inlined&lt;br /&gt;
&lt;br /&gt;
jdbc/execute! awaits sql and vector of sql-params, so i want to submit one sql-statement and vector of sql-params:&lt;br /&gt;
&amp;quot;insert into &amp;quot;my-table&amp;quot; (&amp;quot;col1&amp;quot;,&amp;quot;col2&amp;quot;) VALUES (?, ?)&amp;quot; and [[&amp;quot;str1&amp;quot; &amp;quot;str2&amp;quot;] [&amp;quot;str1&amp;quot;]] but to do this i should have same params &amp;quot;layout&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
As a result i need to override default honeysql behavior that inlines 'NULL' (and booleans) to hoist them into sql parameters.&lt;br /&gt;
&lt;br /&gt;
Result:&lt;br /&gt;
&lt;br /&gt;
1. &amp;quot;insert into &amp;quot;my-table&amp;quot; (&amp;quot;col1&amp;quot;,&amp;quot;col2&amp;quot;) VALUES (?, ?)&amp;quot; &amp;nbsp;[&amp;quot;str1&amp;quot; &amp;quot;str2&amp;quot;]&lt;br /&gt;
2. &amp;quot;insert into &amp;quot;my-table&amp;quot; (&amp;quot;col1&amp;quot;,&amp;quot;col2&amp;quot;) VALUES (?, ?)&amp;quot; &amp;nbsp;[&amp;quot;str1&amp;quot; nil]&lt;br /&gt;
&lt;br /&gt;
Maybe you can advice more accurate way to do.</description>
<category>Protocols</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/8691/protocol-protocol-implementation-subclass-relationship?show=8701#c8701</guid>
<pubDate>Tue, 08 Oct 2019 17:45:37 +0000</pubDate>
</item>
<item>
<title>Commented: Can someone explain the arguments to nav ?</title>
<link>https://ask.clojure.org/index.php/8550/can-someone-explain-the-arguments-to-nav?show=8582#c8582</link>
<description>nav is not needed in your example: &lt;a href=&quot;https://github.com/seancorfield/datafy-nav-example/blob/master/src/datafy_test/alt.clj&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://github.com/seancorfield/datafy-nav-example/blob/master/src/datafy_test/alt.clj&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
That produces the exact same results without implementing nav (because nav's default behavior on a hash map is to just return the value v (which is (get coll k) because that's how you invoke nav in this context).</description>
<category>Protocols</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/8550/can-someone-explain-the-arguments-to-nav?show=8582#c8582</guid>
<pubDate>Wed, 11 Sep 2019 02:00:38 +0000</pubDate>
</item>
<item>
<title>Commented: How to spot patterns where Protocols and custom types are good fit</title>
<link>https://ask.clojure.org/index.php/8228/how-spot-patterns-where-protocols-and-custom-types-are-good?show=8322#c8322</link>
<description>Just bought the book today. Very good read indeed, thanks for the sugestion</description>
<category>Protocols</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/8228/how-spot-patterns-where-protocols-and-custom-types-are-good?show=8322#c8322</guid>
<pubDate>Sun, 04 Aug 2019 13:41:02 +0000</pubDate>
</item>
<item>
<title>Answered: Protocol functions fail to find future extensions when assigned to a local or new var</title>
<link>https://ask.clojure.org/index.php/1544/protocol-functions-fail-future-extensions-assigned-local?show=1772#a1772</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/CLJ-1796&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/CLJ-1796&lt;/a&gt; (reported by alex+import)</description>
<category>Protocols</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/1544/protocol-functions-fail-future-extensions-assigned-local?show=1772#a1772</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: clojure.core/proxy does not work when reloading namespaces</title>
<link>https://ask.clojure.org/index.php/2405/clojure-core-proxy-does-not-work-when-reloading-namespaces?show=2678#a2678</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/CLJ-1864&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/CLJ-1864&lt;/a&gt; (reported by schmir)</description>
<category>Protocols</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/2405/clojure-core-proxy-does-not-work-when-reloading-namespaces?show=2678#a2678</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: Improve support for extending protocols to primitive arrays</title>
<link>https://ask.clojure.org/index.php/1963/improve-support-for-extending-protocols-primitive-arrays?show=2349#a2349</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/CLJ-1381&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/CLJ-1381&lt;/a&gt; (reported by alexmiller)</description>
<category>Protocols</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/1963/improve-support-for-extending-protocols-primitive-arrays?show=2349#a2349</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: Cannot implement protocol methods of the same name inline</title>
<link>https://ask.clojure.org/index.php/1952/cannot-implement-protocol-methods-of-the-same-name-inline?show=2307#a2307</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/CLJ-1625&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/CLJ-1625&lt;/a&gt; (reported by tsdh)</description>
<category>Protocols</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/1952/cannot-implement-protocol-methods-of-the-same-name-inline?show=2307#a2307</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: Extend-protocol for array of Object does not work on array of subtypes of Object.</title>
<link>https://ask.clojure.org/index.php/1895/extend-protocol-array-object-does-work-array-subtypes-object?show=1989#a1989</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/CLJ-2215&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/CLJ-2215&lt;/a&gt; (reported by alex+import)</description>
<category>Protocols</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/1895/extend-protocol-array-object-does-work-array-subtypes-object?show=1989#a1989</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: Add prefer-proto, like prefer-method but for protocols</title>
<link>https://ask.clojure.org/index.php/2811/add-prefer-proto-like-prefer-method-but-for-protocols?show=3198#a3198</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/CLJ-1807&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/CLJ-1807&lt;/a&gt; (reported by bronsa)</description>
<category>Protocols</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/2811/add-prefer-proto-like-prefer-method-but-for-protocols?show=3198#a3198</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: Make `satisfies?` as fast as a protocol method call</title>
<link>https://ask.clojure.org/index.php/3304/make-satisfies-as-fast-as-a-protocol-method-call?show=3396#a3396</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/CLJ-1814&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/CLJ-1814&lt;/a&gt; (reported by bronsa)</description>
<category>Protocols</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/3304/make-satisfies-as-fast-as-a-protocol-method-call?show=3396#a3396</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: Protocol implementation inconsistencies when overloading arity</title>
<link>https://ask.clojure.org/index.php/2779/protocol-implementation-inconsistencies-overloading-arity?show=2996#a2996</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/CLJ-825&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/CLJ-825&lt;/a&gt; (reported by alex+import)</description>
<category>Protocols</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/2779/protocol-implementation-inconsistencies-overloading-arity?show=2996#a2996</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: PermGen leak in multimethods and protocol fns when evaled</title>
<link>https://ask.clojure.org/index.php/3820/permgen-leak-in-multimethods-and-protocol-fns-when-evaled?show=4054#a4054</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/CLJ-1152&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/CLJ-1152&lt;/a&gt; (reported by chouser@n01se.net)</description>
<category>Protocols</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/3820/permgen-leak-in-multimethods-and-protocol-fns-when-evaled?show=4054#a4054</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
</channel>
</rss>