Also I think the ship on overloading some already sailed with some-> and
some->>

David


On Fri, Feb 14, 2014 at 3:27 PM, Dom Kiva-Meyer <li...@domkm.com> wrote:

> Great changes! I have a question about #5.
>
>
>> 5) New "some" operations
>> Many conditional functions rely on logical truth (where "falsey"
>> values are nil or false). Sometimes it is useful to have functions
>> that rely on "not nilness" instead. These functions have been added to
>> support these cases [CLJ-1343]:
>> * some? - same as (not (nil? x))
>> * if-some - like if-let, but checks (not (nil? test)) instead of test
>> * when-some - like when-let, but checks (not (nil? test)) instead of test
>
>
> It seems inconsistent to have "some" mean two very different things within
> the same namespace, especially since the prior uses of "some" (`some`,
> `some-fn`, etc.) are more in keeping with its primary definition of having
> to do with amount (and operate on seqs or variadic arguments) while the new
> functions have to do with existence (and operate on any single value). Why
> not call these new functions `not-nil?`, `if-not-nil`, and `when-not-nil`?
> Or, if "not-nil" is too unwieldy then what about "exists" (`exists?`,
> `if-exists`, `when-exists`)?
>
> Are these names up for discussion?
>
> Cheers,
> Dom
>
>
> On Fri, Feb 14, 2014 at 11:04 AM, Alex Miller <a...@puredanger.com> wrote:
>
>> Clojure 1.6.0-beta1 is now available.
>>
>> Try it via
>> - Download:
>> http://central.maven.org/maven2/org/clojure/clojure/1.6.0-beta1
>> - Leiningen: [org.clojure/clojure "1.6.0-beta1"]
>>
>> Highlights below or see the full change log here:
>> https://github.com/clojure/clojure/blob/master/changes.md
>>
>> We expect Clojure 1.6.0-beta1 to be close to a release candidate; no
>> other big changes are planned. Please give us your feedback and final
>> issues if you find them so we can do the final release!
>>
>> Clojure 1.6.0-beta1 has the following changes from 1.5.1:
>>
>> 1) Clojure now builds with Java SE 1.6 and emits bytecode requiring Java
>> SE 1.6 instead of Java SE 1.5. [CLJ-1268]
>>
>> 2) The following features are no longer marked "Alpha" in Clojure:
>>
>> * Watches - add-watch, remove-watch
>> * Transients - transient, persistent!, conj!, assoc!, dissoc!, pop!, disj!
>> * Exception data - ex-info, ex-data
>> * Promises - promise, deliver
>> * Records - defrecord
>> * Types - deftype
>> * Pretty-print tables - print-table
>>
>> 3) The clojure.java.api package provides a minimal interface to bootstrap
>> Clojure access from other JVM languages. Example:
>>
>>     IFn map = Clojure.var("clojure.core", "map");
>>     IFn inc = Clojure.var("clojure.core", "inc");
>>     map.invoke(inc, Clojure.read("[1 2 3]"));
>>
>> 4) Map destructuring extended to support namespaced keys. [CLJ-1318]
>>
>> In the past, map destructuring with :keys and :syms would not work
>> with maps containing namespaced keys or symbols. The :keys and :syms
>> forms have been updated to allow them to match namespaced keys and
>> bind to a local variable based on the name.
>>
>> Examples:
>>
>>     (let [m {:x/a 1, :y/b 2}
>>           {:keys [x/a y/b]} m]
>>       (+ a b))
>>
>>     (let [m {'x/a 1, 'y/b 2}
>>           {:syms [x/a y/b]} m]
>>       (+ a b))
>>
>> Additionally, the :keys form can now take keywords instead of symbols.
>>  This provides support specifically for auto-resolved keywords:
>>
>>     (let [m {::x 1}
>>           {:keys [::x]} m]
>>       x)
>>
>> 5) New "some" operations
>>
>> Many conditional functions rely on logical truth (where "falsey"
>> values are nil or false). Sometimes it is useful to have functions
>> that rely on "not nilness" instead. These functions have been added to
>> support these cases [CLJ-1343]:
>>
>> * some? - same as (not (nil? x))
>> * if-some - like if-let, but checks (not (nil? test)) instead of test
>> * when-some - like when-let, but checks (not (nil? test)) instead of test
>>
>> 6) Hashing overhaul
>>
>> The Clojure hash algorithms have changed for many primitives and
>> collections.
>> Read the changelog and http://clojure.org/data_structures#hash for more
>> detail
>> and if you are building external collections.
>>
>> In general, this change creates better hash codes (better bit dispersion,
>> fewer
>> collisions) to improve performance of hashed collections (maps and sets).
>> *NOTE:* One side effect may be that code currently relying on the
>> arbitrary order
>> of hashed elements in a collection (tests for example) may need to be
>> fixed.
>>
>> 7) Other new things
>>
>> * unsigned-bit-shift-right - Java's >>>
>> * clojure.test/test-vars - run a set of tests with fixtures
>>
>> 8) Printing enhancements
>>
>> * [CLJ-908](http://dev.clojure.org/jira/browse/CLJ-908)
>>   Print metadata for functions when *print-meta* is true and remove
>> errant space at beginning.
>> * [CLJ-937](http://dev.clojure.org/jira/browse/CLJ-937)
>>   pprint cl-format now supports E, F, and G formats for ratios.
>>
>> 9) Error messages
>>
>> * [CLJ-1248](http://dev.clojure.org/jira/browse/CLJ-1248)
>>   Print type information in reflection messages to help diagnose problem.
>> * [CLJ-1099](http://dev.clojure.org/jira/browse/CLJ-1099)
>>   If non-seq passed where seq is needed, error message now is an
>> ExceptionInfo with the instance value, retrievable via ex-data.
>> * [CLJ-1083](http://dev.clojure.org/jira/browse/CLJ-1083)
>>   Fix error message reporting for "munged" function names (like a->b).
>>  * [CLJ-1056](http://dev.clojure.org/jira/browse/CLJ-1056)
>>   Handle more cases and improve error message for errors in defprotocol
>> definitions.
>>  * [CLJ-1102](http://dev.clojure.org/jira/browse/CLJ-1102)
>>   Better handling of exceptions with empty stack traces.
>> * [CLJ-939](http://dev.clojure.org/jira/browse/CLJ-939)
>>   Exceptions thrown in the top level ns form are reported without file or
>> line number.
>>
>> 10) Documentation strings
>>
>> * [CLJ-1164](http://dev.clojure.org/jira/browse/CLJ-1164)
>>   Fix typos in clojure.instant/validated and other internal instant
>> functions.
>> * [CLJ-1143](http://dev.clojure.org/jira/browse/CLJ-1143)
>>    Correct doc string for ns macro.
>> * [CLJ-196](http://dev.clojure.org/jira/browse/CLJ-196)
>>   Clarify value of *file* is undefined in the REPL.
>> * [CLJ-1228](http://dev.clojure.org/jira/browse/CLJ-1228)
>>   Fix a number of spelling errors in namespace and doc strings.
>> * [CLJ-835](http://dev.clojure.org/jira/browse/CLJ-835)
>>   Update defmulti doc to clarify expectations for hierarchy argument.
>> * [CLJ-1304](http://dev.clojure.org/jira/browse/CLJ-1304)
>>   Fix minor typos in documentation and comments
>> * [CLJ-1302](http://dev.clojure.org/jira/browse/CLJ-1302)
>>   Mention that keys and vals order are consistent with seq order
>>
>> 11) Performance
>>
>> * [CLJ-858](http://dev.clojure.org/jira/browse/CLJ-858)
>>   Improve speed of STM by removing System.currentTimeMillis.
>> * [CLJ-669](http://dev.clojure.org/jira/browse/CLJ-669)
>>   clojure.java.io/do-copy: use java.nio for Files
>> * [commit](
>> https://github.com/clojure/clojure/commit/0b73494c3c855e54b1da591eeb687f24f608f346
>> )
>>   Reduce overhead of protocol callsites by removing unneeded generated
>>   cache fields.
>>
>> 12) Other enhancements
>>
>> * [CLJ-908](http://dev.clojure.org/jira/browse/CLJ-908)
>>   Make *default-data-reader-fn* set!-able in REPL, similar to
>> *data-readers*.
>> * [CLJ-783](http://dev.clojure.org/jira/browse/CLJ-783)
>>   Make clojure.inspector/inspect-tree work on sets.
>> * [CLJ-896](http://dev.clojure.org/jira/browse/CLJ-896)
>>   Make browse-url aware of xdg-open.
>> * [CLJ-1160](http://dev.clojure.org/jira/browse/CLJ-1160)
>>   Fix clojure.core.reducers/mapcat does not stop on reduced? values.
>> * [CLJ-1121](http://dev.clojure.org/jira/browse/CLJ-1121)
>>   -> and ->> have been rewritten to work with a broader set of macros.
>>  * [CLJ-1105](http://dev.clojure.org/jira/browse/CLJ-1105)
>>   clojure.walk now supports records.
>> * [CLJ-949](http://dev.clojure.org/jira/browse/CLJ-949)
>>   Removed all unnecessary cases of sneakyThrow.
>> * [CLJ-1238](http://dev.clojure.org/jira/browse/CLJ-1238)
>>   Allow EdnReader to read foo// (matches LispReader behavior).
>> * [CLJ-1264](http://dev.clojure.org/jira/browse/CLJ-1264)
>>   Remove uses of _ as a var in the Java code (causes warning in Java 8).
>> * [CLJ-394](http://dev.clojure.org/jira/browse/CLJ-394)
>>   Add record? predicate.
>> * [CLJ-1200](http://dev.clojure.org/jira/browse/CLJ-1200)
>>   ArraySeq dead code cleanup, ArraySeq_short support added.
>> * [CLJ-1331](http://dev.clojure.org/jira/browse/CLJ-1331)
>>   Primitive vectors should implement hasheq and use new hash algorithm
>>
>> 13) Bug Fixes
>>
>> * [CLJ-1018](http://dev.clojure.org/jira/browse/CLJ-1018)
>>   Make range consistently return () with a step of 0.
>> * [CLJ-863](http://dev.clojure.org/jira/browse/CLJ-863)
>>   Make interleave return () on 0 args and identity on 1 args.
>> * [CLJ-1072](http://dev.clojure.org/jira/browse/CLJ-1072)
>>   Update internal usages of the old metadata reader syntax to new syntax.
>> * [CLJ-1193](http://dev.clojure.org/jira/browse/CLJ-1193)
>>   Make bigint and biginteger functions work on double values outside long
>> range.
>> * [CLJ-1154](http://dev.clojure.org/jira/browse/CLJ-1154)
>>   Make Compile.java flush but not close stdout so errors can be reported.
>> * [CLJ-1161](http://dev.clojure.org/jira/browse/CLJ-1161)
>>   Remove bad version.properties from sources jar.
>> * [CLJ-1175](http://dev.clojure.org/jira/browse/CLJ-1175)
>>   Fix invalid behavior of Delay/deref if an exception is thrown -
>> exception will
>>   now be rethrown on subsequent calls and not enter a corrupted state.
>> * [CLJ-1171](http://dev.clojure.org/jira/browse/CLJ-1171)
>>   Fix several issues with instance? to make it consistent when used with
>> apply.
>> * [CLJ-1202](http://dev.clojure.org/jira/browse/CLJ-1202)
>>   Protocol fns with dashes may get incorrectly compiled into field
>> accesses.
>> * [CLJ-850](http://dev.clojure.org/jira/browse/CLJ-850)
>>   Add check to emit invokePrim with return type of double or long if
>> type-hinted.
>> * [CLJ-1177](http://dev.clojure.org/jira/browse/CLJ-1177)
>>    clojure.java.io URL to File coercion corrupts path containing UTF-8
>> characters.
>> * [CLJ-1234](http://dev.clojure.org/jira/browse/CLJ-1234)
>>   Accept whitespace in Record and Type reader forms (similar to data
>> literals).
>> * [CLJ-1233](http://dev.clojure.org/jira/browse/CLJ-1233)
>>    Allow ** as a valid symbol name without triggering dynamic warnings.
>> * [CLJ-1246](http://dev.clojure.org/jira/browse/CLJ-1246)
>>   Add support to clojure.reflect for classes with annotations.
>>   * [CLJ-1184](http://dev.clojure.org/jira/browse/CLJ-1184)
>>   Evaling #{do ...} or [do ...] is treated as do special form.
>> * [CLJ-1090](http://dev.clojure.org/jira/browse/CLJ-1090)
>>   Indirect function calls through Var instances fail to clear locals.
>> * [CLJ-1076](http://dev.clojure.org/jira/browse/CLJ-1076)
>>   pprint tests fail on Windows, expecting \n.
>> * [CLJ-766](http://dev.clojure.org/jira/browse/CLJ-766)
>>   Make into-array work consistently with short-array and byte-array on
>>   bigger types.
>> * [CLJ-1285](http://dev.clojure.org/jira/browse/CLJ-1285)
>>   Data structure invariants are violated after persistent operations when
>>   collision node created by transients.
>> * [CLJ-1222](http://dev.clojure.org/jira/browse/CLJ-1222)
>>   Multiplication overflow issues around Long/MIN_VALUE
>> * [CLJ-1118](http://dev.clojure.org/jira/browse/CLJ-1118)
>>   Inconsistent numeric comparison semantics between BigDecimals and other
>> numerics
>> * [CLJ-1125](http://dev.clojure.org/jira/browse/CLJ-1125)
>>    Clojure can leak memory in a servlet container when using dynamic
>>   bindings or STM transactions.
>> * [CLJ-1082](http://dev.clojure.org/jira/browse/CLJ-1082)
>>   Subvecs of primitve vectors cannot be reduced
>> * [CLJ-1301](http://dev.clojure.org/jira/browse/CLJ-1301)
>>   Case expressions use a mixture of hashCode and hasheq, potentially
>>   leading to missed case matches when these differ.
>> * [CLJ-983](http://dev.clojure.org/jira/browse/CLJ-983)
>>   proxy-super does not restore original binding if call throws exception
>> * [CLJ-1176](http://dev.clojure.org/jira/browse/CLJ-1176)
>>   clojure.repl/source errors when *read-eval* bound to :unknown
>> * [CLJ-935](http://dev.clojure.org/jira/browse/CLJ-935)
>>   clojure.string/trim uses different definition of whitespace than
>>   triml and trimr
>> * [CLJ-935](http://dev.clojure.org/jira/browse/CLJ-935)
>>   StackOverflowError on exception in reducef for PersistentHashMap
>>   fold
>> * [CLJ-1328](http://dev.clojure.org/jira/browse/CLJ-1328)
>>    Fix some tests in the Clojure test suite to make their names unique
>>   and independent of hashing order
>> * [CLJ-1328](http://dev.clojure.org/jira/browse/CLJ-1328)
>>   Empty primitive vectors throw NPE on .equals with non-vector
>>   sequential types
>>
>> Happy Valentine's Day!
>>
>> Alex Miller
>>
>>  --
>> 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.
>>
>
>  --
> 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.
>

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