Idiomatic was probably the wrong word since we don't want to arbitrarily 
restrict options in a dynamic language. In this case where the results are 
unexpected and inconsistent in other cases, would this check be acceptable?

On Sunday, September 29, 2013 1:55:05 PM UTC-4, splondike wrote:
>
> Thanks for the comments, you are correct that type 
> hinting<http://clojure.org/java_interop#Java+Interop-Type+Hints>is only to 
> support performance optimization, no exceptions are thrown. The 
> source for the set function suggests that it would not be free to call on 
> sets, it converts its argument to a sequence and then rebuilds a set from 
> that.
>
> I tried adding a manual check based on 'instance?', and ran it through the 
> old 'time clojure blah.clj' profiler (running 2*10^8 calls, 6 runs each), 
> the performance penalty was lost in the noise (over ~1 minute of runtime 
> per run).
>
> Would this approach (probably with some more rigorous performance 
> profiling) be something likely to be included in the language, is it 
> idiomatic? 
>
> On Saturday, September 28, 2013 4:01:10 PM UTC-4, John Hume wrote:
>>
>> On Sep 28, 2013 1:47 PM, "splondike" <splo...@gmail.com> wrote:
>> >
>> > Can anyone else think of a reason why we should not add type hints to 
>> the functions, or why coercing the arguments to sets is better (or 
>> something else I haven't thought of)?
>>
>> IIRC, type hints are only used by the compiler to generate non-reflective 
>> interop code. If you don't do interop, they have no effect. (So you won't 
>> get an exception if you pass an incompatible type, unless there's a Java 
>> method call in there, and I doubt clojure.set does (m)any.) 
>>
>> Iff clojure.set could call clojure.core/set on the appropriate args with 
>> zero performance penalty when the arg were already a set, then I think I'd 
>> want it to do so. 
>>
>> I'd guess the thinking behind the current code is "if they want to do set 
>> operations on their data, let them decide when and how to get that data to 
>> be a set." 
>>
>

-- 
-- 
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/groups/opt_out.

Reply via email to