develooper Front page | perl.perl6.language | Postings from August 2006

request addition of immutable Blob type

Thread Next
From:
Darren Duncan
Date:
August 8, 2006 23:25
Subject:
request addition of immutable Blob type
Message ID:
p06230902c0ff2756129c@[192.168.1.101]
That #perl6 discussion on character strings over the last hour then 
evolved into a discussion on binary strings, where the 
pseudo-conclusion started here:

http://colabti.de/irclogger/irclogger_log/perl6?date=2006-08-09,Wed&sel=294#l520

And so, I formally propose the addition of an immutable and portable 
arbitrary length "Blob" type, whose purpose is basically the same as 
it is in databases, which is for arbitrary length binary data.  It is 
for storing arbitrary data whose internal structure you don't 
necessarily know, but that you just want to preserve it as-is.  Not 
to say that you can't know its meaning, but that such knowledge just 
isn't essential.

Like the immutable and portable Bool|Bit plus likewise and arbitrary 
length Int|Num|Str types that we already have, the Blob type rounds 
out a set of conceptually basic immutable and portable types over 
which other more complicated types can be built.

An example description for Synopsis 6 could be:

     Blob        Perl binary string (finite sequence of bits)

For visual parity, the Str description could be slightly modified 
with the addition of the word 'character':

     Str         Perl character string (finite sequence of Unicode characters)

I also want to emphasize that this "Blob" proposal is strictly an 
addition, and all of the existing types mentioned in Synopsis 6 would 
continue to exist, and with their current meanings.  For example, all 
of buf|Str|Buf are not made redundant by the addition of a Blob.

However, Buf.does(Blob).

Operators defined for the Blob type would include assignment, === and 
!===, concatenation, substring, length, binary and|or|xor etc.  In 
addition, Blob would likely be the default type that pack() converts 
to, and unpack() from, as well as what encryption or generic hashing 
functions like MD5 or SHA1 naturally return in an extended sense; 
though they may return integers in a local sense, the Blob can be a 
sequence of those when they are being stored.  Such hashed values are 
normally treated as immutable once created.  There would exist 
operators to convert between a Blob and various Str representations 
for transmission of the data through a text-only medium, such as 
hexadecimal or octal etc.

Truly, a Blob type should be a very natural addition, and a final 
missing link in some respects.

Thank you in advance.

-- Darren Duncan

Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About