Okay, now that I've had some time working with Parrot assembler, I've developed a list of complaints. ;^)
1. No if(s|sc, i|ic) We're treating strings as second-class citizens here. Why shouldn't you be able to do an 'if' on a string? You could interpret it as the string's length, or the string's length && string ne "0". 2. No unless 'unless' is often more useful than 'if'. Observe: # if(I0) {some stuff} else {other stuff} if I0, BeginIF branch ElseIF BeginIF: some stuff branch EndIF ElseIF: other stuff EndIF: vs. unless I0, ElseIF some stuff branch EndIF ElseIF: other stuff EndIF: In the first case, the if block uses two branches, and in the second it only uses one. Maybe I'm just being nitpicky, but I find the second one a lot cleaner. 3. eq and friends: branching The greatest oddity I've found so far is the eq operator and its pals. While I'm sure these'll be great for something like 'if($foo eq $bar)', they're less than optimal for anything more complicated: 'if($foo eq $bar && $foo eq $baz)', or even the simple '$foobar=$foo eq $bar'. The best way I've found so far to use eq and friends in a generic way is: #I0=I1 eq I2 eq I1, I2, YES set I0, 0 branch END YES: set I0, 1 END: That's pretty suboptimal, considering that it could be: eq I0, I1, I2 and even the if case would just be: #if(I1 eq I2) #I0 is the temp register eq I0, I1, I2 if I0, ... That's a lot cleaner, isn't it? 4. eq and friends: string variants One thing that seems to be missing is string and numeric variants on the comparison ops. While this isn't a problem now, it may be once we get PMCs. I can probably write a patch to fix all this, but first we have to decide if it needs fixing. Some of these are kind of nitpicky, but they're still things I find annoying. Thoughts? --Brent Dax [EMAIL PROTECTED] Configure pumpking for Perl 6 When I take action, I’m not going to fire a $2 million missile at a $10 empty tent and hit a camel in the butt. --Dubya