> Well, as discussed briefly in an earlier thread,
> http:[EMAIL PROTECTED]/msg08514.html
> if we allow ! in function names, we can distinguish between the normal
> and in-place versions of functions without proliferating the number of
> keywords.
>
> chomp! $string;
> my $chomped_string = chomp $string;
I've been trying to work out if there is a possible unification
with assignment operators. Compare:
$a.operator:+=(1);
$a.chomp;
Both modify their object. However, I think the issue my be more
fundamental
In fact, in most OOPLs, operations do modify their object while
queries don't. A common strategy is to use a C<clone> method
when you want don't want to change the object of the operation.
The use of decorations to distinguish uses of nouns is standard
in perl culture ($@%). We don't currently use anything to
distinguish verbs. I know it uses valuable characters, but
adding C<chomp?> to identify a query, and C<chomp!> for an
operation does not seem unreasonable.
Unfortunately, the use of "!" to mean modify_in_place is potentially
ambiguous, because it is a unary operator. I would expect "foo!$a" to
parse as "foo(!$a)", not "(foo!)$a"
Another possibility would be use use C<$a->chomp> for operations
and C<$a.chomp> for the query, but this doesn't help for the
infix form.
Obvious alternatives such as "chomp= $a" suffer the same flaw.
Damian's suggestion of chomp: may be better, if I can teach my
brain to scan it.
I can't reach a conclusion in my own mind, so I thought I'd throw
out my thoughts.
Dave.