[Patches] import floatdivision # 1/2==0.5
Greg Stein
gstein@lyra.org
Tue, 13 Jun 2000 03:34:47 -0700
On Tue, Jun 13, 2000 at 10:19:54AM +0200, M.-A. Lemburg wrote:
> Moshe Zadka wrote:
> >
> > On Mon, 12 Jun 2000, David Scherer wrote:
> >
> > > This patch provides a way to make 1/2==0.5 optional without introducing any
> > > backward incompatibilities. It provides a pseudomodule "floatdivision"
> > > that, when imported, changes the behavior of the importing script at compile
> > > time:
> > >
> > > import floatdivision
> > > print 3/4 # 0.75
> >
> > -1 on that. I don't like language to be dependant on modules: no "library"
> > can import this module, because it might break other code. On the other
> > hand, no "application" can import this module, because it might break
> > library code. Plus a general -1 on thrusting floating point in innocent
> > people's faces.
>
> -1 from here too for much the same reasons.
>
> While introducing some kind of float division is probably a good
> idea for CP4E, I wouldn't like to have to scan 100k LOCs just to
> figure out which of them rely on 5/2 returning 2 instead of 2.5. Some
> time ago there was a discussion about introducing 5//2 to
> give 2.5 (or was it the other way around ?).
>
> Note that writing 3/4. will solve the problem without any
> new language features. For variable arguments you can write
> a/float(b) which is pretty nice to read too.
Um... guys? David's patch uses lexical scoping to determine where the "/"
operator does a float division. There isn't any cross-module or
application-level problems.
If a module is designed to use float division, then it includes the thing at
the top. If just a single function wants it, then the "import" (which it
really isn't) occurs in the function body. Want it for a class? Then do the
import in the classdef portion, before the method definitions.
Go read the patch :-)
Cheers,
-g
--
Greg Stein, http://www.lyra.org/