On Thu, Aug 20, 2009 at 5:52 AM, Lauri Pesonen<lauri.peso...@iki.fi> wrote: > > Hi Rich, > > 2009/8/19 Rich Hickey <richhic...@gmail.com>: >> >> On Fri, Aug 14, 2009 at 6:28 AM, David Powell<djpow...@djpowell.net> wrote: >>> >>> >>>> user=> (.getClass (+ 1 Integer/MAX_VALUE)) >>>> java.lang.Long >>> >>> Also, >>> >>> user=> (def i (Integer/MAX_VALUE)) >>> >>> user=> (class (+ 1 i)) >>> java.lang.Long >>> >>> user=> (class (inc i)) >>> java.math.BigInteger >>> >>> I'd expect inc to overflow to a Long rather than a BigInteger. >>> >> >> Issue/patch welcome for this. > > I've got a fix for Integers overflowing to BigIntegers rather than > Longs. I guess I should create a new issue in Assembla for it. > > I'm uncertain whether you feel that (inc Integer/MAX_VALUE) throwing > is a bug or not? Like Mike said, Integer/MAX_VALUE is treated as a > primitive int so the behaviour is the same as when we cast a number to > int: > > user> (def i Integer/MAX_VALUE) > #'user/i > user> (inc (int i)) > ; Evaluation aborted. (java.lang.ArithmeticException: integer overflow) > user> (inc Integer/MAX_VALUE) > ; Evaluation aborted. (java.lang.ArithmeticException: integer overflow) > > So the behaviour is consistent as long as one realises the difference > between, e.g. 1 and (int 1). >
Right, the exception is ok here. Rich --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---