While the c.l.MapEntry is a persistent vector, there is no such thing as an empty MapEntry persistent vector. Returning empty HAMT persistent vector instead is not a good solution, as 2 elements HAMT vector does not implement IMapEntry interface.
One approach on how to solve this is in Zach's clj-tuple [1] where every 2-tuple automatically implements IMapEntry interface. [1] https://github.com/ztellman/clj-tuple Jozef On Saturday, July 19, 2014 9:49:21 PM UTC+2, puzzler wrote: > > As Mike points out, it does seem that MapEntry is considered a collection > and is designed to emulate a vector so that you don't really have to worry > about whether you have a MapEntry or a two-element vector (and as he points > out, in ClojureScript there really is no distinction between a MapEntry and > a vector). > > With that in mind, I would agree that MapEntry's lack of implementation > for empty is most likely an oversight, and ideally should behave as if it > were a vector. > > > > > On Sat, Jul 19, 2014 at 11:46 AM, Mike Fikes <mike...@me.com <javascript:> > > wrote: > >> MapEntry is a collection: >> >> (coll? (clojure.lang.MapEntry. "a" 1)) >> >> ;=> true >> >> >> (ancestors (class (clojure.lang.MapEntry. "a" 1))) >> >> ;=> (a set that includes clojure.lang.IPersistentCollection) >> >> >> The docstring for empty implies it would return an empty MapEntry. But >> perhaps since MapEntry is a special collection type that must have a size >> exactly equal to 2, empty must return nil. >> >> >> Perhaps ClojureScript will one day introduce a MapEntry type and behave >> the same way as Clojure (ClojureScript currently returns a >> PersistentVector). >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clo...@googlegroups.com >> <javascript:> >> Note that posts from new members are moderated - please be patient with >> your first post. >> To unsubscribe from this group, send email to >> clojure+u...@googlegroups.com <javascript:> >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en >> --- >> You received this message because you are subscribed to the Google Groups >> "Clojure" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to clojure+u...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.