[#17198] enhancing Ruby error messages for out of the bound constant Fixnum? — Guillaume Cottenceau <gc@...>

Hi,

11 messages 2001/07/03

[#17206] /* */ comments — Dave Thomas <Dave@...>

43 messages 2001/07/04
[#17207] Re: /* */ comments — Stephen White <spwhite@...> 2001/07/04

On Wed, 4 Jul 2001, Dave Thomas wrote:

[#17251] Re: /* */ comments — Sean Chittenden <sean-ruby-talk@...> 2001/07/04

> Over on http://www.rubygarden.org, dv posted a patch to parse.y that

[#17268] Re: /* */ comments — matz@... (Yukihiro Matsumoto) 2001/07/05

Hi,

[#17212] Ruby 1.6.4 Win32 .exe installer question — A Bull in the China Shop of Life <feoh@...>

Folks;

11 messages 2001/07/04

[#17225] Re: /* */ comments — Arnaud Meuret <ameuret@...4you.com>

|From: Mark Slagell [mailto:ms@iastate.edu]

17 messages 2001/07/04

[#17240] Ruby Mascot/logo — "Kevin Powick" <kpowick@...>

Hi there.

14 messages 2001/07/04

[#17281] Inheritance — "Aleksei Guzev" <aleksei.guzev@...>

15 messages 2001/07/05
[#17282] Re: Inheritance — ts <decoux@...> 2001/07/05

>>>>> "A" == Aleksei Guzev <aleksei.guzev@bigfoot.com> writes:

[#17348] Adding a method to a class at the top-level — Guillaume Cottenceau <gc@...>

Comrades,

14 messages 2001/07/05

[#17482] Aliases for class methods — "HarryO" <harryo@...>

Say I wanted to write my own version of File#open that adds some

23 messages 2001/07/08

[#17511] Ruby on Slashdot — jweirich@...

Ruby is currently mentioned on Slashdot. I posted some references.

29 messages 2001/07/08
[#17512] Re: Ruby on Slashdot — Tobias Reif <tobiasreif@...> 2001/07/08

Interesting...

[#17518] Re: Ruby on Slashdot — matz@... (Yukihiro Matsumoto) 2001/07/09

Hi,

[#17519] Re: Ruby on Slashdot — "James (ruby-talk)" <ruby@...> 2001/07/09

> |I thought about that too; what about Ruby being a standard?

[#17525] Re: Ruby on Slashdot — matz@... (Yukihiro Matsumoto) 2001/07/09

Hi,

[#17536] Re: Ruby on Slashdot — David Alan Black <dblack@...> 2001/07/09

Hello --

[#17572] Re: Constants and Variables — "HarryO" <harryo@...>

> If you want objects that don't change, try Object#freeze,

25 messages 2001/07/10

[#17732] Re: Array#sort! returns nil when array empty — hfulton@...

> Array#sort! returns nil if the array is empty, whereas ri

32 messages 2001/07/12
[#17736] Re: Array#sort! returns nil when array empty — Paul Brannan <pbrannan@...> 2001/07/12

On Fri, 13 Jul 2001 hfulton@pop-server.austin.rr.com wrote:

[#17739] Re: Array#sort! returns nil when array empty — ts <decoux@...> 2001/07/12

>>>>> "P" == Paul Brannan <pbrannan@atdesk.com> writes:

[#17746] Re: Array#sort! returns nil when array empty — Paul Brannan <pbrannan@...> 2001/07/12

On Fri, 13 Jul 2001, ts wrote:

[#17747] What is Array#- ? — Jim Freeze <jim@...> 2001/07/12

While following the Array thread, I noticed the minus

[#17752] Re: What is Array#- ? — Dave Thomas <Dave@...> 2001/07/12

Jim Freeze <jim@freeze.org> writes:

[#17753] Re: What is Array#- ? — Jim Freeze <jim@...> 2001/07/12

On Fri, 13 Jul 2001, Dave Thomas wrote:

[#17833] Extending objects — "Aleksei Guzev" <aleksei.guzev@...>

16 messages 2001/07/14
[#17834] Ruby-newbie seeks help with Rubywin starting IRB — "Euan Mee" <lucid@...> 2001/07/14

Once I fire up Rubywin, and then invoke _R_uby _I_rb from the

[#17839] Re: Ruby-newbie seeks help with Rubywin starting IRB — A Bull in the China Shop of Life <feoh@...> 2001/07/14

At 07:05 PM 7/14/01 +0900, Euan Mee spewed forth:

[#17859] Re: Creating methods on the fly — "HarryO" <harryo@...>

I

18 messages 2001/07/15

[#17925] Movement in scripting language communities to integrate XML-RPC — gsemones@... (Guerry Semones)

Greetings,

20 messages 2001/07/16
[#17934] Re: Movement in scripting language communities to integrate XML-RPC — Tobias Reif <tobiasreif@...> 2001/07/16

"out of the box" by including

[#18018] Broadcasting data — "HarryO" <harryo@...>

Does someone have an example of broadcasting data around a network using

12 messages 2001/07/18

[#18023] [ANN] libxslt Rubified! — Wai-Sun Chia <waisun.chia@...>

Hello,

16 messages 2001/07/18
[#18024] Re: [ANN] libxslt Rubified! — TAKAHASHI Masayoshi <maki@...> 2001/07/18

Wai-Sun Chia <waisun.chia@compaq.com> wrote:

[#18100] Looking for Ruby programming exercises — Wayne Vucenic <wvucenic@...> 2001/07/19

I've been learning Ruby, mostly with the Pickaxe book, and it's going

[#18188] Newbie. Sinking fast. Please help. — Matt <matt@...>

I bought Programming Ruby a number of months back and finally have an opportunity to try out Ruby. However, I can't get it to build. Actually, that's not quite accurate. It builds fine. It won't pass 'make test'.

12 messages 2001/07/20

[#18193] Re: 99 bottles of beer — "Dat Nguyen" <thucdat@...>

18 messages 2001/07/20
[#18204] Re: 99 bottles of beer — Glen Starchman <glen@...> 2001/07/20

99.downto(0){|x|w=" on the wall";u="#{x!=0?eval(x.to_s):'no more'}

[#18306] Ruby as opposed to Python? — "Mark Nenadov" <mnenadov@...>

Hello. I have toyed with the idea of trying Ruby out for some time now.

118 messages 2001/07/22
[#18759] Re: Ruby as opposed to Python? — Paul Prescod <paulp@...> 2001/07/29

Yukihiro Matsumoto wrote:

[#18774] Re: Ruby as opposed to Python? — "Florian G. Pflug" <fgp@...> 2001/07/30

On Mon, Jul 30, 2001 at 05:58:22AM +0900, Paul Prescod wrote:

[#18393] Trouble Using FXRuby on cygwin/Windows NT — rgilbert1@... (Robbie Gilbert)

Hi,

10 messages 2001/07/23

[#18566] Which database should I use? — Urban Hafner <the-master-of-bass@...>

Hello everybody,

17 messages 2001/07/26
[#18575] Re: Which database should I use? — Urban Hafner <the-master-of-bass@...> 2001/07/26

[#18582] Re: Which database should I use? — Michael Neumann <neumann@...> 2001/07/26

Urban Hafner wrote:

[ruby-talk:18741] Re: Numbers classes.. Rational number? [was: Ruby as opposed to Python?]

From: Kent Dahl <kentda@...>
Date: 2001-07-29 13:29:43 UTC
List: ruby-talk #18741
Kero van Gelder wrote:
> 1 Dutch guilder is wordt 2.20something Euro.
> 
> that's a float :)

It looks like a float, but are you sure 2.20 can be represent accurately
using a float, or is that an approximation?

2.20 == 2 + 1/5

Unfortunately, floating-point formats can't store fiths. Here the
approximation doesn't pose a problem, but once you've got one hundre
billion and a 1/5 dollars, you've got a problem.


> I'd like Rationals in Ruby, but a few divisions can run into huge
> BixNums for denominator and whatstheothercalled. That can be an
> unexpected speed slowdown. Guess you'd get:
> 
>   5 / 2     => Rational(5, 2)
>   5.0 / 2   => Float(2.5)

.... for some reason the Java touting "operator-overloading is evil"
mantra springs to mind here :-) But even if I'd have to use some
explisit verbose "divide" method, I think that it is worth adding.
As for huge Bignums for denominator and divisor(or is it dividend?),
perhaps one could do some normalization of the Rational? Ie,
Rational(100,200) == Rational(1,2)? Some clever bitwise and-ing and
shifting would probably do the trick.


My take on it is this: A float is basically a rational. 
Or a subset of rational, since Rational can represent any number Float
can, but not
the other way.
The only floatingpoint formats I've seen (up close) use something like: 
	a * 2^b
Which is basically a rational: (a * 2^b) == (a / 2^-b)

The reason for most of the approximation losses of floats, is the range
restrictions of a and b. (The tying to base 2 also has impact)
After seeing the light that is Bignum, it seems naturally to also have a
Bigfloat ( basically a float with a and b that can be Bignums) and a
Rational ( where the divisor is any possible Bignum, and not a multiple
of 2)

> which raises the question:
> 
>   Rational(5, 2) / 3.0  => Rational? Float?

(5/2) / (3/1) == (5/2) * (1/3) = (5*1/2*3) == (5/6) if my math skills
don't fail me.

In this case I would assume the Rational / operator did the honorable
thing, and preserved as much information as possible, despite slowness.
If I wanted a float, I would do:
	Rational(5,2).to_f / 3.0

Assuming that the internal data for the float (a and b) can be
extracted, the Rational class has no problem dividing, multiplying or
adding with a float, since it basically treats it like Rational.

As for slowness, Float already seems somewhat plagued since its not an
immediate value (but thats more a GC thing). However, I do strongly
believe that accuracy and information preservation is more paramount
than speed. I'd rather have the operators be slow and correct, and have
some alternative, verbose and fast methods, doing the same but giving a
rats behind about accuracy.

....

While I'm ranting about numbers: Is there any plans to have "bang"
versions of numeric operators?

<SNIP>
irb(main):077:0> a = b = 5.0
5.0
irb(main):078:0>
irb(main):079:0* a *=2
10.0
irb(main):080:0> b
5.0
</SNIP>

This seems to indicate that a*=b is just syntactic sugar for a=a+b,
which is probably the element of least surprise, atleast when converting
Java / C++ programmers more familiar with by-value semantics. But if I
put my OO-purist cap on and start chanting, I feel like the *= operator
violates the object-message paradigm: I would assume the object is
changed inplace.

So, how about mul!, div!, plus! and minus! to complement (and imitate
for immediate types) the operators *=, /=, += and -= that yields this
functionality:
	a = b = 5.0	#=> 5.0
	a.mul! 2	#=> 10.0
	b		#=> 10.0

On numeric objects that are real (and bother the GC), I think this might
help on efficiency, avoiding the creation of an object. 

The only real problem I see, is the confusion it could lead to when
working with immediate values that _may_ turn into true objects due to a
call:
	a = b = 5	#=> 5
	a.mul! 2	#=> 10
	b		#=> 5    # immediate value, therefore not changed
versus
	a = b = myLargeNumber	# myLargeNumber could be Fixnum, Bignum, Float
etc
	a.mul! 2		#=> myLargeNumber*2
	b			# Just what is b now?
where b would be myLargeNumber if it was a Fixnum, but would be
myLargeNumber*2 if
it was a true object (Bignum, Float, etc)

Have I gone completely mad, missed something obvious or? Comments?

-- 
<[ Kent Dahl ]>================<[ http://www.stud.ntnu.no/~kentda/ ]>
  )____(stud.techn.;ind..data)||(softwareDeveloper.at(Trustix))_( 
 /"Opinions expressed are mine and not those of my Employer,      "\
( "the University, my girlfriend, stray cats, banana fruitflies,  " )
 \"nor the frontal lobe of my left cerebral hemisphere.           "/

In This Thread