From: Peter Date: 2004-12-28T00:42:26+09:00 Subject: Re: Allowing custom number literal suffixes? --981873195-1848564049-1104162129=:12871 Content-Type: MULTIPART/MIXED; BOUNDARY="981873195-1848564049-1104162129=:12871" This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --981873195-1848564049-1104162129=:12871 Content-Type: TEXT/PLAIN; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: QUOTED-PRINTABLE A version that works for 1.9 is attached. (With the one attached by=20 Florian, two chunks fail because the context changed slightly btween 1.8.2= =20 and 1.9.) Peter On Mon, 27 Dec 2004, Florian Gro=DF wrote: > Moin! > > On the ruby-muse mailing list which is a place for discussion of new idea= s=20 > for Ruby there recently was a sub-thread concerning the introduction of= =20 > user-defined number literal suffixes. These suffixes are already used in= =20 > other languages and look like 1.5f or 0.6r. I think having these would be= =20 > nice for user-defined numeric Classes like Rational (currently these over= load=20 > 1/2 under mathn and other operations which can be a problem) and imaginar= y=20 > numbers (via the Complex class). I think being able to write 0.5r instead= of=20 > the much longer Rational.reduce(1, 2), 2i instead of Complex.new(2, 1) or= =20 > 5.1b instead of BigDecimal.new("5.1") would be a nice thing that would no= t=20 > have many downsides. > > Peter Vanbroekhoven was able to come up with a fairly simple and efficien= t=20 > patch which I have reattached to this mail. With it applied you can write= =20 > 1.5x and it will call number_literal_x("1.5") and return the result. > > However I might be overlooking issues that are associated with this=20 > enhancement and I know that having useless features leads to language blo= at.=20 > So what do the community and matz think about this? Would this be useful = to=20 > you? > > Thank you all in advance for feedback. > > Regards, > Florian Gross > > --981873195-1848564049-1104162129=:12871 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=number-literal-patch2 Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=number-literal-patch2 LS0tIGV2YWwuYwkyNyBEZWMgMjAwNCAxNDo1Njo1OCAtMDAwMAkxLjEuMS4x DQorKysgZXZhbC5jCTI3IERlYyAyMDA0IDE1OjMyOjExIC0wMDAwCTEuMS4x LjEuMi4xDQpAQCAtNzU0NSw2ICs3NTQ1LDEzIEBADQogICAgIHJ1Ynlfc2Fm ZV9sZXZlbCA9IHNhZmU7DQogfQ0KIA0KK3N0YXRpYyBWQUxVRQ0KK3JiX251 bWJlcl9saXRlcmFsX2Yob2JqLCBzKQ0KKyAgICAgVkFMVUUgb2JqLCBzOw0K K3sNCisgICAgcmV0dXJuIHJiX2Zsb2F0X25ldyhyYl9zdHJfdG9fZGJsKHMs IFFmYWxzZSkpOw0KK30NCisNCiB2b2lkDQogSW5pdF9ldmFsKCkNCiB7DQpA QCAtNzY0Miw2ICs3NjQ5LDggQEANCiAgICAgcmJfZ2xvYmFsX3ZhcmlhYmxl KCZ0cmFjZV9mdW5jKTsNCiANCiAgICAgcmJfZGVmaW5lX3ZpcnR1YWxfdmFy aWFibGUoIiRTQUZFIiwgc2FmZV9nZXR0ZXIsIHNhZmVfc2V0dGVyKTsNCisN CisgICAgcmJfZGVmaW5lX21ldGhvZChyYl9tS2VybmVsLCAibnVtYmVyX2xp dGVyYWxfZiIsIHJiX251bWJlcl9saXRlcmFsX2YsIDEpOw0KIH0NCiANCiAv Kg0KLS0tIHBhcnNlLnkJMjcgRGVjIDIwMDQgMTQ6NTc6NTMgLTAwMDAJMS4x LjEuMQ0KKysrIHBhcnNlLnkJMjcgRGVjIDIwMDQgMTU6MzI6MTEgLTAwMDAJ MS4xLjEuMS4yLjENCkBAIC00NzEsNyArNDcxLDcgQEANCiAJa19fRklMRV9f DQogDQogJXRva2VuIDxpZD4gICB0SURFTlRJRklFUiB0RklEIHRHVkFSIHRJ VkFSIHRDT05TVEFOVCB0Q1ZBUiB0TEFCRUwNCi0ldG9rZW4gPG5vZGU+IHRJ TlRFR0VSIHRGTE9BVCB0U1RSSU5HX0NPTlRFTlQNCisldG9rZW4gPG5vZGU+ IHRJTlRFR0VSIHRGTE9BVCB0U1RSSU5HX0NPTlRFTlQgdE5VTUJFUl9MSVRF UkFMDQogJXRva2VuIDxub2RlPiB0TlRIX1JFRiB0QkFDS19SRUYNCiAldG9r ZW4gPG51bT4gIHRSRUdFWFBfRU5EDQogDQpAQCAtMzY4NCw2ICszNjg0LDcg QEANCiAJCTsNCiANCiBudW1lcmljICAgICAgICAgOiB0SU5URUdFUg0KKyAg ICAgICAgICAgICAgICB8IHROVU1CRVJfTElURVJBTA0KIAkJfCB0RkxPQVQN CiAJCXwgdFVNSU5VU19OVU0gdElOVEVHRVIJICAgICAgICVwcmVjIHRMT1dF U1QNCiAJCSAgICB7DQpAQCAtNTkwOCw2ICs1OTA5LDE5IEBADQogDQogCSAg ZGVjb2RlX251bToNCiAJICAgIHB1c2hiYWNrKGMpOw0KKwkgICAgaWYgKG5v bmRpZ2l0ICYmIElTQUxQSEEobm9uZGlnaXQpKSB7DQorCSAgICAgICAgYyA9 IG5vbmRpZ2l0Ow0KKwkgICAgfQ0KKwkgICAgaWYgKElTQUxQSEEoYykpIHsN CisJICAgICAgICBjaGFyIG5hbWVbMTddID0gIm51bWJlcl9saXRlcmFsXyoi Ow0KKwkJbmFtZVsxNV0gPSBjOw0KKwkJTk9ERSAqc3RyOw0KKwkgICAgICAg IHRva2ZpeCgpOw0KKwkJc3RyID0gTkVXX0xJU1QoTkVXX1NUUihyYl9zdHJf bmV3KHRvaygpLCB0b2tsZW4oKSkpKTsNCisJCW5leHRjKCk7DQorCQl5eWx2 YWwubm9kZSA9IE5FV19GQ0FMTChyYl9pbnRlcm4obmFtZSksIHN0cik7DQor CQlyZXR1cm4gdE5VTUJFUl9MSVRFUkFMOw0KKwkgICAgfQ0KIAkgICAgdG9r Zml4KCk7DQogCSAgICBpZiAobm9uZGlnaXQpIHsNCiAJCWNoYXIgdG1wWzMw XTsNCi0tLSBleHQvYmlnZGVjaW1hbC9iaWdkZWNpbWFsLmMJMjcgRGVjIDIw MDQgMTU6MDE6NTkgLTAwMDAJMS4xLjEuMQ0KKysrIGV4dC9iaWdkZWNpbWFs L2JpZ2RlY2ltYWwuYwkyNyBEZWMgMjAwNCAxNTozMjoxMSAtMDAwMAkxLjEu MS4xLjIuMQ0KQEAgLTEyMTcsNiArMTIxNywxOSBAQA0KIH0NCiANCiBzdGF0 aWMgVkFMVUUNCityYl9udW1iZXJfbGl0ZXJhbF9iKG9iaiwgcykNCisgICAg IFZBTFVFIG9iaiwgczsNCit7DQorICAgIEVOVEVSKDUpOw0KKyAgICBSZWFs ICpwdjsNCisNCisgICAgU2FmZVN0cmluZ1ZhbHVlKHMpOw0KKyAgICBHVUFS RF9PQkoocHYsIFZwQ3JlYXRlUmJPYmplY3QoMCwgUlNUUklORyhzKS0+cHRy KSk7DQorICAgIA0KKyAgICByZXR1cm4gVG9WYWx1ZShwdik7DQorfQ0KKw0K K3N0YXRpYyBWQUxVRQ0KIEJpZ0RlY2ltYWxfbGltaXQoaW50IGFyZ2MsIFZB TFVFICphcmd2LCBWQUxVRSBzZWxmKQ0KIHsNCiAgICAgVkFMVUUgIG5GaWc7 DQpAQCAtMTM0Niw2ICsxMzU5LDggQEANCiAgICAgcmJfZGVmaW5lX21ldGhv ZChyYl9jQmlnRGVjaW1hbCwgImZpbml0ZT8iLCAgIEJpZ0RlY2ltYWxfSXNG aW5pdGUsIDApOw0KICAgICByYl9kZWZpbmVfbWV0aG9kKHJiX2NCaWdEZWNp bWFsLCAidHJ1bmNhdGUiLCAgQmlnRGVjaW1hbF90cnVuY2F0ZSwgLTEpOw0K ICAgICByYl9kZWZpbmVfbWV0aG9kKHJiX2NCaWdEZWNpbWFsLCAiX2R1bXAi LCBCaWdEZWNpbWFsX2R1bXAsIC0xKTsNCisNCisgICAgcmJfZGVmaW5lX21l dGhvZChyYl9tS2VybmVsLCAibnVtYmVyX2xpdGVyYWxfYiIsIHJiX251bWJl cl9saXRlcmFsX2IsIDEpOw0KIH0NCiANCiAvKg0K --981873195-1848564049-1104162129=:12871-- --981873195-1848564049-1104162129=:12871--