Alex, what's your feeling about how a reify-like form and a deftype-like
form that supported concrete class extension (as detailed in the other
thread) would be received? If you think there might be interest I can start
a proposal and possibly write the patch as well.


On 15 April 2014 14:32, Alex Miller <a...@puredanger.com> wrote:

> It is a non-goal for gen-class (and reify, proxy, etc)to support the
> construction of any possible Java class or to fully support every possible
> Java feature. That said, particular extensions to existing features might
> be useful in reasonable use cases.
>
>
> On Monday, April 14, 2014 7:56:21 PM UTC-5, Colin Fleming wrote:
>
>> Well, I'm a bit torn on this one. On the one hand, I'd love to have
>> something that meets my particular use case (of course!) which I wrote
>> about here: https://groups.google.com/d/topic/clojure/MznBwxZt4cY/
>> discussion. I think that case can be met while still keeping the API
>> fairly simple. But once you start down the path of being able to do
>> everything that you can in Java (multiple constructors, classes or members
>> with non-standard visibility, annotations etc) the API becomes much more
>> complicated, and I'm not sure where the right trade-off is there. My gut
>> feeling is that much more than an extend-type as discussed in that thread
>> should probably be done in Java, but again, maybe I just want what I
>> personally need!
>>
>>
>> On 15 April 2014 02:31, Jon Seltzer <seltz...@gmail.com> wrote:
>>
>>> This is unfortunate.  I certainly can write a Java class and I expected
>>> that would be the answer.  The question for me is whether, as a group, we
>>> see any value in having a consistent interface with the JVM.  One could
>>> argue that Clojure does not need any of the interop features it already
>>> has.  In fact, one might argue that all interop should occur by invoking
>>> pure Clojure from Java only but I hope most of us would agree that would
>>> not a very satisfying outcome.  The Clojure in Clojure work being done
>>> gives me hope this is going to change.  A Clojure compiler written in
>>> Clojure would almost certainly need to be full (or more fully) featured.
>>>
>>> I like Stuart Sierra's quote (Twitter):  "Using Java libraries is
>>> idiomatic Clojure", and this is true for a lot of us using Clojure.
>>>
>>> jbs
>>>
>>>
>>> On Monday, April 14, 2014 1:10:47 AM UTC-7, Colin Fleming wrote:
>>>
>>>> gen-class really isn't suitable for doing complicated interop like
>>>> annotating fields. It's heavily oriented towards a single means of managing
>>>> state, which is a single field generally containing an atom, which in turn
>>>> contains your actual state in a map or similar. If you really need multiple
>>>> fields you can use deftype/defrecord, but they come with different
>>>> restrictions - no inheritance, don't require their namespace on class init
>>>> which is required for many use cases where you might want field
>>>> annotations. I'm also not sure if their fields can be annotated.
>>>>
>>>> In general when you start needing that level of interop, the easiest
>>>> thing is just to write a Java class and call into Clojure from there as
>>>> required.
>>>>
>>>>
>>>> On 14 April 2014 14:28, Jon Seltzer <seltz...@gmail.com> wrote:
>>>>
>>>>>  There are many Java APIs that expect client APIs to annotate fields
>>>>> but Clojure does not support annotations on fields.  Is there any plan to
>>>>> add support?
>>>>>
>>>>> And one tangential question:  Is there any consideration of adding
>>>>> gen-class support for multiple fields instead of just one?
>>>>>
>>>>> jbs
>>>>>
>>>>> --
>>>>> 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 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.
>

-- 
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