On Tue, Apr 19, 2005 at 02:14:04AM +0300, wolverian wrote: : On Mon, Apr 18, 2005 at 04:00:53PM -0700, Larry Wall wrote: : > %num_of_lines<file> = [EMAIL PROTECTED]; : > : > : because the Perl 5 way would put a reference to @file in the hash. : > : Scalar context always makes references now, from what I understand. : > : > Interestingly, a stored reference would track the current number of : > lines rather than taking a snapshot. But you should definitely think : > of it as storing a reference rather than the number of lines, because : > the ref will certainly behave differently in string context. : > : > Larry : : How sane would it be to put a reference to the instance method in the : hash?
It seems like a sane thing to me, but that's a rather low standard. : I think Perl 6 doesn't actually support that directly, but one can : always do: : : %num_of_lines<file> = List::elems.assuming(@file); That would need to be %num_of_lines<file> = &List::elems.assuming(@file); or it would assume you're trying to call a class method on a class named List::elems. : I'm not sure if the currying works correctly there. How does one curry : the invocant? (I'm thinking about a situation when the method doesn't : specify the invocant explicitly in the signature, if that makes any : difference.) It looks like we're getting positional currying in addition to named, so the syntax above should work. But as it currently stands the invocant always has an alias of $_, so you could presumably say %num_of_lines<file> = &List::elems.assuming(_ => @file); : I like the whole idea of bound references (to use the Pythonic term), : although Python's syntax lends itself better to such use. Sometimes I : wish we would require parentheses on every method and sub call. Then a : reference to the method/sub would be simply its name without the parens. Myself, I'd rather have the possibility of list operators. But you've probably noticed that already. :-) : I hope I never have to design my own language. I would be schizophrenic : before the day ends. That's backwards. You have to be schizophrenic before the day starts. Larry