>>>>> "LW" == Larry Wall <[EMAIL PROTECTED]> writes:
LW> On Tue, Jul 20, 2004 at 08:42:48PM -0400, Uri Guttman wrote:
LW> Many expressions are naturally scalar even in list context. Most
LW> operators force scalar context unless you hyper them. In particular,
LW> the new unary operators C<+>, C<~>, and C<?> are specifically designed
LW> to force scalar context in a huffmanly efficient way. Seems a little
LW> silly to duplicate that with something longer.
someone mailed me off list about those. but you have to decide on
number/string/boolean context when you arelady have string context
surrounding it. seems like context overkill. what i liked about $() was
it just provided scalar context and the string context was provided by
"".
LW> If you want symmetry you can always use a redundant C<*> in C<[EMAIL PROTECTED]>
LW> to go with the redundant C<~> in C<{~$bar}>.
that is frumious IMO.
LW> : i don't think "$foo.bar" should be a method call. it is too easy to
LW> : accidentally write and i bet many will fall into that trap. also it may
LW> : generate a very odd runtime (since it is not a method call with a
LW> : signature or declaration, it can't (easily?) be checked at compile time)
LW> : message that may be hard to actually tie back to the string in question.
LW> : so i would say, make interpolating method calls a little harder because
LW> : it won't be done as often as simpler stuff (huffman) and it should be
LW> : marked off as something completely different than simple variable
LW> : interpolation.
LW> That's the direction we're heading.
same direction, different lane on the highway :)
LW> : so method calls would need the $() or @() wrappers as do all expressions
LW> : beyond simple scalar value lookup. that means $foo, @foo[0], $foo[0],
LW> : %foo{'bar'} and $foo{'bar'} all interpolate and only their variants
LW> : (longer index/key expressions) do as well.
LW> I'm inclining more towards the "only interpolate things that end with
LW> brackets or parens" rule. That would allow $foo.bar() to interpolate,
LW> but not $foo.bar.
and i assume $foo is still fine even though it doesn't end in a bracket?
and also i assume you mean any of }, ] or )?
how would you put in the literal string $foo.bar()? escaping the . or
the ( ?
LW> Unlike in Perl 5, Perl 6's references will (by default) autodereference
LW> to their representation in string context. (Not to be confused with
LW> scalar context, where they remain references.) You have to do something
LW> explicit to get the SCALAR(0xdeadbeef) form of output. I don't know what
LW> that syntax is yet.
that can be some longer func name as it is rarely needed IMO. mostly
debugging and some odd places that in p5 used it for a unique key or
class name.
LW> I probably shouldn't be thinking about that anyway. Can you all tell
LW> I'm putting off writing my OSCON talk? :-)
you too?! i would have never take you for a procrastinator! :)
i just wrote my main draft of my slides the other day.
why put off something today when you can put it off tomorrow?
uri
--
Uri Guttman ------ [EMAIL PROTECTED] -------- http://www.stemsystems.com
--Perl Consulting, Stem Development, Systems Architecture, Design and Coding-
Search or Offer Perl Jobs ---------------------------- http://jobs.perl.org