On Tue, Feb 15, 2005 at 05:49:44PM -0600, Rod Adams wrote: > >As you've written things above, C<fun> is autothreaded (your option #3), > >and we'll see two C<warn> output lines if $DEBUG is set. > > The case of Damian's response in a prior message: > [...] > Could easily be achieved with a single layer of encapsulation? > > perl6 -e "$x = 'cat'|'dog'; say1 $x; sub say1 ($x) {say $x}"
Nope. Even in this case you've created a function C<say1> with a scalar context that isn't expecting a junction of values, so the call to C<say1> is autothreaded over the values of the junction $x. > If what you're saying is true, then feeding a junction into DBI for a > "insert" statement, since the output proper is encapsulated, would > create multiple new records in the database? I'm back to being very > disturbed. Welcome to the world of dynamic languages. If junctions disturb you, then Perl 6's ability to override built-in routines and operators will really keep you up at night. (See C<temp>, and http://www.nntp.perl.org/group/perl.perl6.language/19195. :-) > Actually, using the semantics you've outlined above, there is no > implementation problem. > However, I disagree that those semantics are desirable. Fair enough. I'm not the one who expects to make that decision, nor am I really advocating a particular interpretation -- I'm trying to leave that to others. I'm just implementing (and explaining) how the "current state of things" appears to be based on the specs I've read. Pm