On Fri, 11 Oct 2002, Jonathan Scott Duff wrote:
: On Fri, Oct 11, 2002 at 03:21:38PM +0100, Aaron Crane wrote:
: > Vaguely heretical, I know, but I'd be inclined to do something like this:
: > 
: >   Perl 5     Proposed Perl 6
: >   $x && $y   $x & $y
: >   $x || $y   $x | $y
: 
: Larry just added nice character doubling ops to be more consistent and
: here you want to take two of them away? :-)

I doubt I'd muck with the doubled ones.

I'm wondering whether the single ones could indicate parallel streams.
We had the difficulty of specifying whether the C<for> loop should
terminate on the shorter or the longer stream.  We could say that |
terminates on the longer, and & on the shorter.  Possibly there's
some relationship with any() and all() in there as well.  The | could
generally be construed as a comma that doesn't guarantee ordering.
So cases could be written

    when 1 | 2 | 3      {...}

as well as with comma.  Saying

    when 1 & 2 & 3      {...}

might be short for

    when all(1,2,3)     {...}

: >   $x & $y    bitand($x, $y)
: >   $x | $y    bitor($x, $y)
: > 
: > Using functions instead of operators for these operations seems reasonable
: > to me given how often they're useful.  
: 
: How about these?
: 
:       $x band $y
:       $x bor $y
: 
: Of course, then people will probably expect these too:
: 
:       $x bshl $y
:       $x bshr $y
:       $x bxor $y
: 
: Hrm ...
: 
:       sysopen(FOO,"foo", O_WRONLY bor O_CREAT bor O_TEXT)
:       sysopen(FOO,"foo", bor O_WRONLY, O_CREAT, O_TEXT)
: 
: :-(
: 
: As long as we're in fantasy-land, how about these?
: 
:       $x .& $y
:       $x .| $y 

I was thinking more along the lines of:

    $x &&& $y
    $x ||| $y

But then there's ~ vs ~~~ too.  The triple syntax at least has the
virtue of the visual metaphor of doing a bunch of ANDs or ORs in
parallel.  But it's kind of odd to write ~~~$x for a one's complement.

Anyone else want to be UNSUBSCRIBED IMMEDIATELY?  :-)

: Those look like bit operations to me  :-)
: 
: > I'm not especially fond of the names bitand and bitor, but they're
: > accurate, reasonably short, and have prior art in C and C++.
: 
: Not all prior art is necessarily good art :-)
: 
: > Two things about this proposal:
: >
: >   * This leaves && and || available for other purposes, but I can't
: >     off the top of my head think of anything else I'd want them for.
: 
: Then why muck with them?  Just munge the bitwise operators.
: 
: >   * Does this make it harder to write overloaded bitwise ops for your
: >     classes?
: 
: No harder than it was before especially given that you can warp the
: syntax however you please.

No warpage necessary.  All operators can be named as functions with
operator: on the front.

Larry

Reply via email to