This and other RFCs are available on the web at
http://dev.perl.org/rfc/
=head1 TITLE
Controllable Data Typing
=head1 VERSION
Maintainer: Syloke Soong <[EMAIL PROTECTED]>
Mailing List: [EMAIL PROTECTED]
Date: 10 Aug 2000
Version: 1
Number: 89
=head1 ABSTRACT
Provide a choice for a programmer to define non-convertible and
semi-convertible variables with explicit data-types.
=head1 DESCRIPTION
Current intelligence and flexibility of Perl variables are extremely
indispensable. However at times this feature is also extremely
inconvenient. As an example, character string "007" is often mistaken as
int 7. So that concatenation of a variable strings "001999", "." , "03"
to form an output filename could, unless with more extensive treatment,
form a filename of 1999.3 instead. Attempts at storing into a hash with the
key "007" or " 7" rather than 7 is a trying experience. Not to mention
attempts at reading a hash using similar keys.
=head1 IMPLEMENTATION
Retain current flexibility of Perl variables.
Provide a new form of declaring variables:
my $varname type;
or
my $varname (type);
Allow the following forms to fix the data-type of a variable:
my $k int;
my $str varchar;
my $str (varchar);
my @astr (varchar);
my $ff (int,double);
my @allowedtypes = (int,varchar);
my $ivd @allowedtypes;
if ($somecondition){push @allowedtypes , double}
>From then on, evaluations on $k shall always return an integer,
unless a stringified or type-float evaluation is explicitly done on it.
$str would behave as a variable length string. $ff would behave as a
Perl5 flexible variable but constrained to either int or double.
Initially $ivd would be allowed the behave either as int or varchar.
On condition $somecondition, it is allowed an additional degree of freedom
of double due to appendage to the array @allowedtypes.
=head1 REFERENCES