Path: csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!border3.nntp.dca.giganews.com!Xl.tags.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!local2.nntp.dca.giganews.com!nntp.earthlink.com!news.earthlink.com.POSTED!not-for-mail NNTP-Posting-Date: Sun, 24 Jul 2011 11:16:13 -0500 Date: Sun, 24 Jul 2011 09:16:08 -0700 From: Patricia Shanahan User-Agent: Mozilla/5.0 (Windows NT 5.2; WOW64; rv:5.0) Gecko/20110624 Thunderbird/5.0 MIME-Version: 1.0 Newsgroups: comp.lang.java.programmer Subject: Re: Arithmetic overflow checking References: <015aeb15-57db-48ab-9cd4-77f8448b632f@w24g2000yqw.googlegroups.com> <09fe171s46ilvq9qmn254dctunm6noh0ps@4ax.com> <4e262731$0$314$14726298@news.sunsite.dk> <4e26300b$0$309$14726298@news.sunsite.dk> <4e26b4ed$0$2501$db0fefd9@news.zen.co.uk> <4e28097f$0$2533$da0feed9@news.zen.co.uk> <7a23c9d2-508f-4dbd-af91-8cdf2a9764e1@p29g2000pre.googlegroups.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Message-ID: Lines: 36 X-Usenet-Provider: http://www.giganews.com NNTP-Posting-Host: 70.230.200.239 X-Trace: sv3-aDg9Fp1n9MBApxPH01mFLF+haFcWzJuzRLeXVyomRoRAqwBG1HFbeNvHdRoNSEtlayXrbBiVf4DvmG9!h8+7RCapGEw0k1OQ+1D1MEtKMkEVQM9uNWgnGz05oTuXyRShNdyrh7R6JRxrOm64D8hshyHC8TTO!56aYoemchuijJtS9ATdsQJ5z4uR3nb1kETyTyGm6twLn8cI= X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.3.40 X-Original-Bytes: 3950 Xref: x330-a1.tempe.blueboxinc.net comp.lang.java.programmer:6508 On 7/23/2011 7:55 PM, Henderson wrote: > On 23/07/2011 5:03 PM, Andreas Leitgeb wrote: >> It is my opinion, that operator overloading at least for a certain >> limited set of JSL classes (including BigDecimal and BigInteger as >> well as some new Complex class in addition to String's +), would >> be beneficial. Ditto for a new "strictint" keyword to enable >> detection and handling of integer overflows. > > An obvious suggestion would be to allow it on all java.lang.Number > subclasses, but a + b among these is only defined if a is a Number class > that has an overload of .plus(x) that is applicable to an argument of a > supertype of b, and the most specific such is chosen; and if a is a > primitive, is treated as b + a; a * b analogously; a - b with a > primitive uses (b - a).negate() and expects the return type of minus to > support negate(); and for division we likewise need .reciprocal(). > > We could go further and rewrite Number.java so that it is Number extends Number> and defines: I don't think it would be wise to tie operator overloading to Number. Number defines a series of conversions that make some sense for those types that represent subsets of the real line. You cannot return "the value of the specified number as a double" if the specified number is complex. I would prefer the complex type to have separate, meaningfully named, methods returning as double each of the real part, the complex part, the absolute value, and the phase. I think it might be better to create a marker interface java.math.Arithmetic. I do like the idea of a fixed mapping from operators to method names that are normal identifiers. I don't think all arithmetic types should be required to support all operations. For example, consider negate and an unsigned type, or reciprocal and an integer type. Patricia