"Nikolai Weibull" <now / bitwi.se> writes:

> On 2/8/07, Unknown <borg / uu3.net> wrote:
>> On Thu, 8 Feb 2007, Micah Wylde wrote:
>>
>> > I'm not a contributor, but I am a user of ruby, and there is a
>> > possibility that no one seems to have mentioned. What about having
>> > String.ord return an array of integers, with a one character string
>> > returning a one element array?
>> >
>> > So "test".ord => [116, 101, 115, 116]
>> > "a".org => [97]

In fact, that's as bad as--and equivalent to--String#unpack.

>> I must disagree with you. This would make things even slower.
>> Usualy you use String::ord to get value of one specified char.
>> String::ord(index) sounds best from all propositions Ive seens here.
>> Its elegant anf fast.
>> Also.. if you want such behavior.. I think it would be better to provide
>> range functionality to ord aswell
>> "test".ord -> 116
>> "test".ord(1) -> 101
>> "test".ord(1..2) -> [101,115]
>>
>> What Do you think guys about that?
>
> I think it's time we see some actual use cases for String#ord.
>
>  nikolai

There must be some kind of impedance mismatch going on here.  Is
somebody really arguing that maybe it should NOT be possible to read
binary data into a String and process individual bytes efficiently?

Use cases?

  - any kind of image processing
  - implementing maybe half of all Internet protocols
  - data compression
  - error correction
  - encryption
  - Efficient XML Interchange [1]

Stop thinking of strings like 'hello world' and start thinking of
strings like TCP headers.  If anyone wants to argue that it should be
arbitrarily impossible / inefficient / inconvenient to implement TCP
in Ruby then I think the burden of proof should be on them.

Maybe you mean to argue that String should not be used for non-textual
data, even though it always has been before.  In that case maybe we
need something like NArray in core.  (In core, not ext, please.)

Steve

[1] In fact, see http://www.w3.org/TR/xbc-use-cases/ for a whole
stack of use cases.