Is there a reason you want an (empty some-map-entry) to implment IMapEntry? 
You can already do ordinary modifications on it where it loses the type. 
Not sure why empty should be an exception. IMapEntry only provides key, 
val, and java.util.Map.MapEntry, and probably if you're modifying map 
entries, you don't mind losing that functionality.

On Saturday, July 19, 2014 3:04:13 PM UTC-5, Jozef Wagner wrote:
>
> 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> 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
>>> 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
>>> 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.
>>> 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.

Reply via email to