On 04/11/02 17:52 -0800, [EMAIL PROTECTED] wrote: > [Note to all: yes, this is me, despite the weirdities of the quoting > and headers. This is how it looks when I using mutt out of the box, > because I haven't yet customized it like I have pine. But I do like > being able to see my own Unicode characters, not to mention everyone > else's. If you don't believe this is me, well, I'll just tell you that > I live on a tropical island near Antarctica, my social security number > is 987-65-4321, and my mother's maiden name was the same as my maternal > grandfather's maiden name. Or something like that... --Ed]
Mutt? I'm using mutt and I still haven't had the privledge of correctly viewing one of these unicode characters yet. I'm gonna be really mad if you say you're also using an OS X terminal. I suspect that it's my horrific OS X termcap that's misbehaving here. Aargh! Brian > > On Mon, Nov 04, 2002 at 02:25:08PM -0800, Michael Lazzaro wrote: > > On Monday, November 4, 2002, at 11:58 AM, Larry Wall wrote: > > >You know, separate streams in a for loop are not going to be that > > >common in practic, so maybe we should look around a little harder for > > >a supercomma that isn't a semicolon. Now *that* would be a big step > > >in reducing ambiguity... > > > > Or more than one type of supercomma, e.g: > > > > for @x I @y I @z -> $x I $y I $z { ... } > > > > to mean: > > for @x ; @y ; @z -> $x ; $y ; $z { ... } > > That almost works visually. > > > - vs - > > > > for @x § @y § @z -> $x § $y § $z { ... } > > > > to mean: > > > > for @x -> $x { > > for @y -> $y { > > for @z -> $z { > > ... > > } > > } > > } > > > > ;-) > > Glad you put the smiley. I think the latter is much clearer. > > But at the moment I'm thinking there's something wrong about any > approach that requires a special character on the signature side. > I'm starting to think that all the convolving should be specified > on the left. So in this: > > for parallel(@x, @y, @z) -> $x, $y, $z { ... } > > the signature specifies that we are expecting 3 scalars to the sub, > and conveys no information as to whether they are generated in parallel > or serially. That's entirely specified on the left. The natural > processing of lists says that serial is specified like this: > > for @a, @b, @c -> $x, $y, $z { ... } > > Of course, parallel() is a rotten thing to have to say unless you're > into readability. So we could still have some kind of parallizing > supercomma, mabye even P (U+2225 PARALLEL TO). But let's keep it > out of the signature, I think. In other words, if something like > > for @x P @y P @z -> $x, $y, $z { ... } > > is to work, then > > @result = @x P @y P @z; > > has to interleave @x, @y, and @z. It's not special to the C<for>. > In the case of C<for>, of course, the compiler should feel free to > optimize out the actual construction of an interleaved array. > > I suppose it could be argued that P is really spelled »,« or some such. > However, > > @result = @x »,« @y »,« @z; > > just doesn't read quite as well for some reason. A slightly better > case could be made for > > @result = @x `|| @y `|| @z; > > The reason we originally munged with the signature was so that we > could do weird things with differing numbers of streams on the left > and the right. But if you really want a way to take 3 from @x, then > 3 from @y, then 3 from @z, there should be something equivalent to: > > for round_robin_by_3s(@x, @y, @z) -> $x, $y, $z { ... } > > Fooling around with signature syntax for that rare case is not worth it. > This way, the C<for> won't have to know anything about the signature other > than that it expects 3 scalar arguments. And Simon will be happ(y|ier) > that we've removed an exception. > > Ed, er, Larry