Set, Util, and List are actually just interfaces, and Clojure's collections
implement them. The destructive operations throw
UnsupportedOperationException of course, which is actually explicitly
allowed by the spec:
* <p>The "destructive" methods contained in this interface, that is, the
* methods that modify the map on which they operate, are specified to throw
* <tt>UnsupportedOperationException</tt> if this map does not support the
* operation. If this is the case, these methods may, but are not required
* to, throw an <tt>UnsupportedOperationException</tt> if the invocation
would
* have no effect on the map. For example, invoking the {@link
#putAll(Map)}
* method on an unmodifiable map may, but is not required to, throw the
* exception if the map whose mappings are to be "superimposed" is empty.
This conversion is recursive; for instance, a List<List<Integer>> will be
internally stored as an immutable persistent List<List<Long>>. However,
this behavior is not documented, partially because it hasn't been tested to
my satisfaction yet and partially because validation does not currently
work with nested collections.
The library isn't available on Maven yet; I want more feedback on the
design before I make a commitment to the current interfaces, conventions,
and behaviors.
On Sunday, June 15, 2014 7:56:30 PM UTC-7, Atamert Ölçgen wrote:
>
> Really cool library, thanks for sharing. I was initially irked by the use
> of (mutable) Java collection interfaces, but then I read that they're made
> immutable when passed to the builder. I assume they're recursively
> converted to persistent representations.
>
> It reminded me of Guava's immutable classes a little. (Not persistent, no
> serialization)
>
> Is it available via maven?
>
>
>
>
> On Mon, Jun 16, 2014 at 1:18 AM, Ryan Schmitt <[email protected]
> <javascript:>> wrote:
>
>> I've been developing a library to bring Clojure data to Java developers.
>> By "Clojure data" I mean both Clojure's persistent immutable data
>> structures *and* serialized Edn data. I wanted access to Clojure's
>> capabilities without having to use Clojure<->Java interop directly or make
>> use of downcasting. Obviously it would be preferable to just use Clojure,
>> but this is intended as the next best thing for developers who for whatever
>> reason are currently stuck with Java.
>>
>> https://github.com/rschmitt/dynamic-object
>>
>> I'm looking for feedback on the design and implementation. The README is
>> reasonably thorough, and the tests
>> <https://github.com/rschmitt/dynamic-object/tree/master/src/test/java/com/github/rschmitt/dynamicobject>
>>
>> contain hundreds of usage examples. If anyone has any questions, I'll be
>> glad to field them here.
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to [email protected]
>> <javascript:>
>> Note that posts from new members are moderated - please be patient with
>> your first post.
>> To unsubscribe from this group, send email to
>> [email protected] <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 [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
>
> --
> Kind Regards,
> Atamert Ölçgen
>
> -+-
> --+
> +++
>
> www.muhuk.com
>
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/d/optout.