Re: [RFC] Perl6 Operator List, Take 5

2002-10-31 Thread Mark J. Reed
On 2002-10-30 at 12:47:17, Larry Wall wrote:
 (Anybody know of a version of pine that does UTF-8?)
Yes - it's called mutt. ☺

Seriously, I do highly recommend switching from pine to mutt.  It's not
a completely painless transition, since mutt is more ELMlike than PINElike,
but I know many who have made the switch and never looked back.  And mutt
does do UTF-8 just fine, including converting automagically between
it and various other character sets (whichever ones your iconv library
knows about).

And I continue to see no French quotes whatsoever in your messages,
while those from other people either come through fine or come through
with Latin-1 French quotes marked as UTF-8.  Very odd.

-- 
Mark REED| CNN Internet Technology
1 CNN Center Rm SW0831G  | [EMAIL PROTECTED]
Atlanta, GA 30348  USA   | +1 404 827 4754



email encoding of the french quote characters (ISO_8859_1 0xab and 0xbb)

2002-10-31 Thread David Dyck

On Wed, 30 Oct 2002 at 12:17 -0800, Michael Lazzaro [EMAIL PROTECTED]:

 On Wednesday, October 30, 2002, at 11:58  AM, Larry Wall wrote:
  I'd even be willing to give up ´foo bar bazª meaning qw(foo bar baz)
  for this.

 I can't see that right (MacOSX Jaguar) in the email; to me it looks
 like a forwardtick and an, um, underlined 'a' -- but in spite of that,
 I'm game.  It's just so pretty (when it works!)

 On my Mac, it's spelled «op» -- can others see that correctly, or do we
 have a sorry disconnect in the fonts, here, for us Mac folks?

This concerns me, so forgive this partial digression.

When I tried to read Larry's message there were no characters
around the foo bar bas (which arrived as
Content-Type: TEXT/PLAIN; charset=UTF-8
Content-Transfer-Encoding: 8BIT)

I just saw
I'd even be willing to give up foo bar baz meaning qw(foo bar baz)
for this.
in both pine and lookout, and my spool files.

I was quite surprized when I saw Larry's message quoted with the
characters in question in Austin's message (arrived
as Content-Type: text/plain; charset=us-ascii)
 I'd even be willing to give up «foo bar baz» meaning qw(foo bar baz)
 for this.

How did they get transformed to the funny 0xb4 and 0xaa characters
in Micheal's quote. (arrived as Content-Transfer-Encoding: quoted-printable_

ISO_8859_1
   253   171   AB « LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
   273   187   BB » RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK





RE: [RFC] Perl6 Operator List, Take 5

2002-10-31 Thread Dyck, David


 -Original Message-
 From: Austin Hastings [mailto:austin_hastings;yahoo.com] 
 
 How do you write a  in a Windows based environment? (Other than by
 copying them from Larry's emails or loading MSWord to do
 insert-symbol)

You could use the Character Map accessory to put
the character into the clipboard, or
press the alt and hold the alt key while typing 0171 (or 0187)
 alt+0171
 alt+0187



Re: Iterators [was: worth adding collections to the core language?]

2002-10-31 Thread Leopold Toetsch
Luke Palmer wrote:



I wonder if things should have a more general interface than
numerical indices.  I've wanted linked lists in perl, and every time I
do a splice on an array I cringe for speed reasons.

Heh, we could use my linked array implementation.  Or not.



Please have a look at list.c, which is the engine for *Array classes.



But I think we need a concept of iterators in the core.  


There were some patches floating around. Dunno what happened to them.



Luke



leo




Re: Vectorizing operators for Hashes

2002-10-31 Thread Me
  %a ^:union[op] %b
 
  %a :foo[op]:bar %b
 
 I think that any operators over 10 characters should
 be banished, and replaced with functions.

I'd agree with that. In fact probably anything over 4,
and even 4 is seriously pushing it.

I'll clarify that I am talking here about using adverbs.

From A3 (about the colon):

Hence, this operator modifies a preceding operator
adverbially. ... It can be used to supply a ``step'' to a
range operator, for instance.

I would expect the length of these adverbs to fall in a
range somewhat the same as properties. So a word
like 'union' is reasonable, and even 'intersection' too.

Ignoring hyperoperators, one might use an adverb thus:

$a / $b : dbz_Inf

to have a divide by zero be treated as Infinity.

I can see scope for a bunch of adverbs that control how
a particular hyperoperation works. Thus, perhaps:

a ^[/] b : short

to stop iteration when the shortest of two arrays is used up.

But this assumes that the adverb applies to the ^[]
hyperop, not the / op.

Perhaps this is resolved thus:

a ^[/ : dbz_Inf] b : short

But I also suspect it would be good to be able to
associate distinct adverbs with the lhs and rhs of
a binary operation.

So I thought perhaps one could go down the path of 

a ^ :step(2) [/ : dbz_Inf] :step(3) b : short

Hmm. Perhaps hyperop adverbs are preceded with
a ^ and one gets instead:

a ^[/] b : dbz_Inf, ^short, ^step(2,3)

--
ralph



Re: Vectorizing operators for Hashes

2002-10-31 Thread Markus Laire
On 31 Oct 2002 at 0:40, John Williams wrote:

 On Wed, 30 Oct 2002, Me wrote:

  %a ^:union[op] %b
 
  %a :foo[op]:bar %b

 I think that any operators over 10 characters should be banished, and
 replaced with functions.

I don't think there should be any upper limit for operator-lengths.

e.g. When teaching perl to my little brothers (still at primary
school) I might want to use alphabetical userdefined operators:

print 1 + 5 - 4 / 2
print one plus five minus four divided_by two
(and same in finnish)
näytä yksi plus viisi miinus neljä jaettuna kaksi

At least it wouldn't harm anyone to allow this.

--
Markus Laire 'malaire' [EMAIL PROTECTED]





Re: [RFC] Perl6 Operator List, Take 5

2002-10-31 Thread Iain 'Spoon' Truskett
* Dyck, David ([EMAIL PROTECTED]) [31 Oct 2002 19:21]:

[...]
 You could use the Character Map accessory to put
 the character into the clipboard, or
 press the alt and hold the alt key while typing 0171 (or 0187)
  alt+0171
  alt+0187

To be honest, as easy as it is to type ^a^v or ^k,[1] it's still
typing an awful lot just to get a character. Surely the Perl operator
Huffman encoding should take into account the length of time it takes to
type the darn thing.

Personally, I'm against non US-ascii chars being part of the core
language. It's fine if people want their Unicode identifiers, or import
modules to change operators, but I'd like to think I can at least read
and write my own code in non-Latin-1 environments.


[1] screen and vim respectively, although I could always make vim treat
 as an abbreviation for the guillemet, although that would
interfere with heredocs),


cheers,
-- 
Iain, who carefully didn't use any « or » chars until just then. Oops.



Re: Vectorizing operators for Hashes

2002-10-31 Thread fearcadi
Uri Guttman writes:

  
   %hash1.values [+]= %hash2{%hash1.keys} ;
  
but here is exactly example analogous to 

my Dog $x = new Dog . 

which was discusse dand turned  to

my Dog $x .= new ; 
 
It's (almost) clear what you want when you write 

%hash1 [+]= %hash2 ; 

so why to screen the meaning with several ( almost ) unnecessary 
words . 

And besides, If that will be usefull there will be somebody who will 
make those shortcuts. 

aracdi . 




Perl6 Operator List (REMAINING ISSUES)

2002-10-31 Thread fearcadi
Michael Lazzaro writes:
  OK, by my count -- after editing to reflect Larry's notes -- only a few 
  issues remain before the ops list can be completed.
  
  
  
  1) Need a definitive syntax for hypers,
   ^[op]  and  «op»
  have been most seriously proposed -- something that keeps a
  bracketed syntax, but solves ambiguity issues.
  
  2) Possible inclusion of unary prefix ^, meaning complement.
  (Assuming doesn't conflict with (1))
  
  3) Possible inclusion of like/unlike or similar as synonyms for ~~ 
  !~.  Which we don't have to decide now.
  
  
  
  All other op issues, by my count, revolve around the meanings of 
  specific hyperop constructs.  There is one, overriding question with 
  the hyperops, which is the precise relation between an op, an 
  assignment op, and their (three!) hyperop equivs:
  
A   op   B
A   op=  B
A ^[op]  B
A ^[op=] B
A ^[op]= B
  
  If we can formalize the precise relationship between the three hypers 
  in the presence of scalar and list (and hash?) values for A and B, I 
  believe we can answer nearly all the hyperop questions definitively.  
  For example:
  
  a ^[op] b   #  array v array
  $a ^[op] b   # scalar v array
  a ^[op] $b   #  array v scalar
  $a ^[op] $b   # scalar v scalar
  
  a ^[op=] b   #  array v array
  $a ^[op=] b   # scalar v array
  a ^[op=] $b   #  array v scalar
  $a ^[op=] $b   # scalar v scalar
  
  a ^[op]= b   #  array v array
  $a ^[op]= b   # scalar v array
  a ^[op]= $b   #  array v scalar
  $a ^[op]= $b   # scalar v scalar

and also this : 
  
  %a ^[op]= b   #  hash v array
  %a ^[op]= $b   # hash  v scalar
  %a ^[op]= %b   # hash  v hash
  a ^[op]= %b   #  array v hash
  $a ^[op]= %b   # scalar v hash





  
  Some of these are nonsensical, some of them aren't.  So which are 
  which, and can someone demonstrate that the rule holds true for ALL 
  hyperoperators, as opposed to just MOST?   ;-)



  
  MikeL
  
  
  
arcadi 



Re: Vectorizing operators for Hashes

2002-10-31 Thread fearcadi
Me writes:
%a ^:union[op] %b
   
%a :foo[op]:bar %b
   
   I think that any operators over 10 characters should
   be banished, and replaced with functions.
  
I agree. But I think that we can get away here with just hash
properties , just like hash behaviour in regexps is controlled by
properties . 

e.g. 
union: 

(%a,%b) ^is no_strict_keys ;
(%a %b) ^is default_value ( 0 ) ;
%a ^[+] %b 

intersection :

(%a,%b) ^is strict_keys ;
%a ^[+] %b 


this maybe longer but clear : one line - one concept . 

but I am not shure ... 

arcadi . 



Re: [RFC] Perl6 HyperOperator List

2002-10-31 Thread Smylers
Yesterday Aaron Crane wrote:

 Jonathan Scott Duff writes:

  a `+ b

 In my experience, many people actually don't get the backtick
 character at all.

Yes.  I think that might be a good reason _for_ using backtick in vector
operators:

  * Backticks aren't used in any other operators, so they would not be
mistaken for xor nor arrays.

Backticks also look a little odd, so even if it isn't intuitive as
to what is going on, somebody seeing a vector op for the first time
should at least spot that _something_ different is happening.

  * People starting out in Perl wouldn't want to use vector ops straight
away (there are enough other things to be learning).  So a character
that involves 'advanced' typing is used for an 'advanced' feature.

A pair of backticks could be used if the vector-equals distinction is
required:

  a `+`= b;
  a `+=` b;

 I always hate teaching people what backticks do -- not because the
 concept is difficult, but because the syntax is so alien to so many
 people.  So I teach qx// for Perl, and $() for Unix shell, and I throw
 in backticks as an extra 'you might also see this' affair.

I don't think backticks for vector conflicts with backticks for
invoking a shell (cos the latter is a term not an op), I'd be in favour
of removing the current backtick behaviour anyway:

  * It looks like quoting, and it isn't really.  It's more like a
function call.

  * Many people use backticks when Csystem() is desired.  The fact
that these two similar features look so different from each other us
confusing.

Also, if backticks were to be used for vector ops then removing the
existing use would mean that backticks are _only_ for vector ops.  No
'small exceptions' -- the very simple rule that backticks are always
vector ops.

 Anyway, that was a bit of a rant, but what I mean is: I'd actually be
 in favour of avoiding backtick entirely in operators.

I can see where you're coming from there.  They are an awkward glyph.
But Larry's short enough of characters as it is: I don't think we can
afford to throw one away entirely, however unpleasant it is.

Smylers




Re: [RFC] Perl6 HyperOperator List

2002-10-31 Thread Graham Barr
On Thu, Oct 31, 2002 at 12:16:34PM +, [EMAIL PROTECTED] wrote:
 Yesterday Aaron Crane wrote:
 
  Jonathan Scott Duff writes:
 
 @a `+ @b
 
  In my experience, many people actually don't get the backtick
  character at all.
 
 Yes.  I think that might be a good reason _for_ using backtick in vector
 operators:


 A pair of backticks could be used if the vector-equals distinction is
 required:
 
   @a `+`= @b;
   @a `+=` @b;

Thats ugly, IMO.

Now this is going to sound wild (probably) and I have not thought too much
about it and there are probably others who can see the pitfalls quicker
then me. But could () be available for hyper operators ?

I will sit back now and watch the firewaorks, as I wont be in the UK
on Nov 5 :-)

Graham.




RE: [RFC] Perl6 Operator List, Take 5

2002-10-31 Thread Austin Hastings

--- Dyck, David [EMAIL PROTECTED] wrote:
  -Original Message-
  From: Austin Hastings [mailto:austin_hastings;yahoo.com] 
  
  How do you write a  in a Windows based environment? (Other than by
  copying them from Larry's emails or loading MSWord to do
  insert-symbol)
 
 You could use the Character Map accessory to put
 the character into the clipboard, or
 press the alt and hold the alt key while typing 0171 (or 0187)
  alt+0171
  alt+0187

Well, that certainly flows fluidly from the fingertips...

^[op], you say?

Or I could finally figure out how to program the function keys on my
keyboard, I guess...

APL, here we come...


=Austin


__
Yahoo! - We Remember
9-11: A tribute to the more than 3,000 lives lost
http://dir.remember.yahoo.com/tribute



Re: [RFC] Perl6 HyperOperator List

2002-10-31 Thread Austin Hastings

--- Damian Conway [EMAIL PROTECTED] wrote:
 Austin Hastings wrote:
 
 ?  ?|  ?^  - [maybe] C-like bool
 operations
 ?= ?|= ?^= - (result is always just 1 or
 0)
[?][?|][?^] - (hyperversions)
[?]=   [?|]=   [?^]=
[?=]   [?|=]   [?^=]
  
  
  Two possible differences between double-[|] and single-[|]:
  
  1- Force (unlazy) evaluation of all operands.
  2- Force conversion to 1 or 0. (Are true and false going to be
  built-in literals, a la java?)
  
  Which (or both) of these are supposed to come from the single-op
  versions of these?
 
 Superpositions don't lazily evaluate their operands (unless those
 operands are themselves superpositions).

Sorry, let me be more explicit: Forget the flexops for now. What's a
C-like boolean single-letter do?

   - [maybe] C-like bool operations
   - (result is always just 1 or 0)

In the C that I learned, the ^| ops were bitwise.

Likewise, the  || ops were lazy booleans.

So what's a single-letter boolean act like? Is it lazy? Does it retain
its bitwise-ness but (since boolean) force evaluation for 1 or 0 first?
I just don't understand what the implied behavior is, since the
reference is outside my experience.


  $a = 1 | 5;
  $a = 10;

  What's $a?
  
  1 | 5  10
 
 Yes (by precedence)

Umm, is this wrong? As I understand it, that's the same as 1 | (510)
because of precedence, no?

  (1|5)  10
 
 Yes (explcitly).

(With apologies to the folks at Sesame Street):
One of these answers isn't like the other ...
One of these answers just doesn't belong ... 

  On the other hand, some of the examples seem counterintuitive. That
 is,
  considering Damian's:
  
  $seen = $start | $finish;
  for ... - $line {
print $line\n unless $line == $seen;
$seen |= $line;
  }
  
  I can understand the notion of unless $line is a-or-b-or-c-or...
 but
  I keep THINKING in terms of I've seen a-and-b-and-c-and...
 
 That's understandable. So you write:
 
  $seen = $start  $finish;
  for ... - $line {
 print $line\n if $line != $seen;
 $seen = $line;
  }

Yeah, that's better. Thanks.

  So when would multiple flexops be combined? Anyone have any real
 world
  examples, even simple ones?
 
 Sure (for sufficiently complex values of simple ;-)
 
 Here's how to find the love of your life:
 
  $requirements = tall  dark  handsome
| old  rich
| Australian;
 
  for  - $candidate {
  my $traits = any( split /ws/, $candidate );
   print True love: $candidate\n
  if $requirements eq $traits;
  }
 
 Of course, not everyone can hope to be lucky enough to meet an
 Australian, but you get the idea. ;-)

Well, thank God for small favors. 

traits = any ( ... )
requirements = ..  ..
if $requirements eq $traits

Should that be traits = all()?

I mean, assuming that the split returns only adjectives, you've got
something like:

short  busty  dark  nymphomaniac  father owns a chain of
liquor stores

in the requirements

and you've got 

a | b | ... | z

in the traits

How do THOSE work together?

(In other words: Can you write Apoc.Flexible now, please?)

=Austin



__
Do you Yahoo!?
HotJobs - Search new jobs daily now
http://hotjobs.yahoo.com/



Re: worth adding collections to the core language?

2002-10-31 Thread Austin Hastings

--- Damian Conway [EMAIL PROTECTED] wrote:
 Larry wrote:
  Possibly we might even extend the notion of hash to any junk.
  
  %hash = 1 | 2 | 3;
 
 So you're suggestion that a normal hash is a junction of pairs???


Damian Conway admits: Everything in Perl6 is 'Junk'

Who can't see *this* coming on slashdot? :-)

=Austin

__
Do you Yahoo!?
HotJobs - Search new jobs daily now
http://hotjobs.yahoo.com/



UTF-8 and Unicode FAQ, demos

2002-10-31 Thread Michael Lazzaro

Here is an extensive FAQ for Unicode and UTF-8:

http://www.cl.cam.ac.uk/~mgk25/unicode.html

and here is a test file that will show you how many of the most common 
glyphs (WGL4, via Microsoft) you are capable of displaying in your 
current setup:

http://www.cl.cam.ac.uk/~mgk25/ucs/wgl4.txt

A reduced list of interesting characters is as follows.  Note that I 
may not be sending them all correctly, as not all of them are available 
on OSX.  And that not all interesting characters are a part of the WGL4 
set.

00AB # « LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
00BB # » RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK

00AC # ¬ NOT SIGN
2202 # ∂ PARTIAL DIFFERENTIAL
2206 # ∆ INCREMENT
220F # ∏ N-ARY PRODUCT
2211 # ∑ N-ARY SUMMATION
2219 # ÅE BULLET OPERATOR
221A # √ SQUARE ROOT
221E # ∞ INFINITY
221F # àA RIGHT ANGLE
2229 # Åø INTERSECTION
222B # ∫ INTEGRAL
2248 # ≈ ALMOST EQUAL TO
2260 # ≠ NOT EQUAL TO
2261 # Åfl IDENTICAL TO
2264 # ≤ LESS-THAN OR EQUAL TO
2265 # ≥ GREATER-THAN OR EQUAL TO
00D7 # Å~ MULTIPLICATION SIGN
00F7 # ÷ DIVISION SIGN
00B0 # ° DEGREE SIGN
00B1 # ± PLUS-MINUS SIGN
00B5 # µ MICRO SIGN
00B6 # ¶ PILCROW SIGN
2020 # † DAGGER
2021 # ‡ DOUBLE DAGGER
2022 # • BULLET
2026 # … HORIZONTAL ELLIPSIS
2030 # ‰ PER MILLE SIGN

00A1 # ¡ INVERTED EXCLAMATION MARK
00A2 # ¢ CENT SIGN
00A3 # £ POUND SIGN
00A4 # °Ë CURRENCY SIGN
00A5 # ¥ YEN SIGN
00A6 # ∫ BROKEN BAR
00A7 # § SECTION SIGN
00A8 # ¨ DIAERESIS
00A9 # © COPYRIGHT SIGN
00AA # ª FEMININE ORDINAL INDICATOR
00AD # ú SOFT HYPHEN
00AE # ® REGISTERED SIGN
00AF # ¯ MACRON
00B2 # ©˜ SUPERSCRIPT TWO
00B3 # ©¯ SUPERSCRIPT THREE
00B7 # · MIDDLE DOT
00B8 # ¸ CEDILLA
00BA # º MASCULINE ORDINAL INDICATOR
00BF # ¿ INVERTED QUESTION MARK
203C # ᥠDOUBLE EXCLAMATION MARK
02C7 # ˇ CARON
02D8 # ˘ BREVE
02D9 # ˙ DOT ABOVE
02DA # ˚ RING ABOVE
2122 # ™ TRADE MARK SIGN
2126 # Ω OHM SIGN

2190 # Å© LEFTWARDS ARROW
2191 # Å™ UPWARDS ARROW
2192 # Å® RIGHTWARDS ARROW
2193 # Å´ DOWNWARDS ARROW
2194 # °Í LEFT RIGHT ARROW
2195 # ¢’ UP DOWN ARROW

0391 # Éü GREEK CAPITAL LETTER ALPHA
0392 # Ɇ GREEK CAPITAL LETTER BETA
0393 # É° GREEK CAPITAL LETTER GAMMA
0394 # ɢ GREEK CAPITAL LETTER DELTA
0395 # ɣ GREEK CAPITAL LETTER EPSILON
0396 # ɧ GREEK CAPITAL LETTER ZETA
0397 # É• GREEK CAPITAL LETTER ETA
0398 # ɶ GREEK CAPITAL LETTER THETA
0399 # Éß GREEK CAPITAL LETTER IOTA
039A # É® GREEK CAPITAL LETTER KAPPA
039B # É© GREEK CAPITAL LETTER LAMDA
039C # É™ GREEK CAPITAL LETTER MU
039D # É´ GREEK CAPITAL LETTER NU
039E # ɨ GREEK CAPITAL LETTER XI
039F # É≠ GREEK CAPITAL LETTER OMICRON
03A0 # ÉÆ GREEK CAPITAL LETTER PI
03A1 # ÉØ GREEK CAPITAL LETTER RHO
03A3 # É∞ GREEK CAPITAL LETTER SIGMA
03A4 # ɱ GREEK CAPITAL LETTER TAU
03A5 # É≤ GREEK CAPITAL LETTER UPSILON
03A6 # É≥ GREEK CAPITAL LETTER PHI
03A7 # ɥ GREEK CAPITAL LETTER CHI
03A8 # ɵ GREEK CAPITAL LETTER PSI
03A9 # Ω GREEK CAPITAL LETTER OMEGA

03B1 # Éø GREEK SMALL LETTER ALPHA
03B2 # É¿ GREEK SMALL LETTER BETA
03B3 # É¡ GREEK SMALL LETTER GAMMA
03B4 # ɬ GREEK SMALL LETTER DELTA
03B5 # É√ GREEK SMALL LETTER EPSILON
03B6 # Ƀ GREEK SMALL LETTER ZETA
03B7 # É≈ GREEK SMALL LETTER ETA
03B8 # É∆ GREEK SMALL LETTER THETA
03B9 # É« GREEK SMALL LETTER IOTA
03BA # É» GREEK SMALL LETTER KAPPA
03BB # É… GREEK SMALL LETTER LAMDA
03BC # É  GREEK SMALL LETTER MU
03BD # ÉÀ GREEK SMALL LETTER NU
03BE # ÉÃ GREEK SMALL LETTER XI
03BF # ÉÕ GREEK SMALL LETTER OMICRON
03C0 # π GREEK SMALL LETTER PI
03C1 # ɜ GREEK SMALL LETTER RHO
03C2 # V GREEK SMALL LETTER FINAL SIGMA
03C3 # É– GREEK SMALL LETTER SIGMA
03C4 # É— GREEK SMALL LETTER TAU
03C5 # É“ GREEK SMALL LETTER UPSILON
03C6 # É” GREEK SMALL LETTER PHI
03C7 # É‘ GREEK SMALL LETTER CHI
03C8 # É’ GREEK SMALL LETTER PSI
03C9 # É÷ GREEK SMALL LETTER OMEGA


MikeL


Re: Perl6 Operator List (REMAINING ISSUES)

2002-10-31 Thread Larry Wall
On Thu, 31 Oct 2002 [EMAIL PROTECTED] wrote:
:   %a ^[op]= @b   #  hash v array
:   @a ^[op]= %b   #  array v hash

What would those mean?  Are you thinking only of hashes with numeric keys?

Larry




Re: [RFC] Perl6 Operator List, Take 5

2002-10-31 Thread Larry Wall
On Thu, 31 Oct 2002, Iain 'Spoon' Truskett wrote:
: To be honest, as easy as it is to type ^a^v or ^k,[1] it's still

Thanks, I didn't know it was that «easy» in vim.  :-)

: typing an awful lot just to get a character. Surely the Perl operator
: Huffman encoding should take into account the length of time it takes to
: type the darn thing.

Sure, but that's only one half of Huffman.  You also have to consider
the frequency of use.  (And as a second order effect, whether you want
to discourage frequent use. :-)

I personally think vector ops are pretty special, and should
remain so.  I have enough familiarity with (read: contempt for)
APL that I don't want multi-dimensional operators to be the default,
regardless of how they're spelled.  Special ops should look special.

: Personally, I'm against non US-ascii chars being part of the core
: language. It's fine if people want their Unicode identifiers, or import
: modules to change operators, but I'd like to think I can at least read
: and write my own code in non-Latin-1 environments.

Perl 6 is written in Unicode.  This will cause more pain in the short term,
but I'm trying to optimize for twenty years from now.  (Yes, this message
is in Latin-1, but that can be considered an encoding of the first 256
codepoints of Unicode.)

Larry




Re: Vectorizing operators for Hashes

2002-10-31 Thread Larry Wall
On Thu, 31 Oct 2002, Markus Laire wrote:
: I don't think there should be any upper limit for operator-lengths.

There will never be any official limits.  Perl is not about arbitrary
limits.  But I will tell you that I only added = to Perl 5 because
I knew there would never be a == operator.  We'll have to relax that
a bit for Perl 6, but we're still trying vaguely to avoid the Icon trap.
Only compositions of operators will be allowed to get longer than 3 chars.
And we try to keep the basic operators at 2 or less.

The really great thing about the French quotes is that they visually
keep the user aware of the composition.  «+=» is obviously a variety of
+=, whereas ^+= is not obvious, though shorter.  (Square brackets are
even better at that, but have other problems.)

Larry




Re: Vectorizing operators for Hashes

2002-10-31 Thread fearcadi
Austin Hastings writes:
  
  --- [EMAIL PROTECTED] wrote:
   I agree. But I think that we can get away here with just hash
   properties , just like hash behaviour in regexps is controlled by
   properties . 
   
   e.g. 
   union: 
   
   (%a,%b) ^is no_strict_keys ;
   (%a %b) ^is default_value ( 0 ) ;
   %a ^[+] %b 
   
   intersection :
   
   (%a,%b) ^is strict_keys ;
   %a ^[+] %b 
   
   
   this maybe longer but clear : one line - one concept . 
  
  Arcadi,
  
  How would this work for hashes with differing properties?
  
  E.g.,
  
  %a = (apple = 1, abacus = 2);
  %b = (banana = 3, abacus = 2);
  
  %a ^is strict_keys;
  %b ^is no_strict_keys;
  
  %c = %a ^[+] %b;
  
  What would happen?

in the result hash there will be only keys of %a, because 
%b *can admit unknown keys*, but %a - cannot 

  
  %a rules?: %c == (abacus = 4)
  %b rules?: %c == (apple = 1, abacus = 4, banana = 3)
  strict_keys filters result?: %c == (apple = 1, abacus = 4)
  
  =Austin
  



arcadi 



Re: Vectorizing operators for Hashes

2002-10-31 Thread fearcadi
Austin Hastings writes:
   but I am not shure ... 
  
  sure
  

thanks . sorry that I write so badly . I'll try to be better . 

  (Unless you do this on purpose :-)
  
  Cheers,
  
  =Austin
  
  __
  Do you Yahoo!?
  HotJobs - Search new jobs daily now
  http://hotjobs.yahoo.com/
  
  



Re: Vectorizing operators for Hashes

2002-10-31 Thread fearcadi
Me writes:
union: 
intersection :
   
   How would this work for hashes with differing properties?
   
   %a ^is strict_keys;
   %b ^is no_strict_keys;
   
   What would happen?
  

in the resulting hash only ( and all ) keys of %a will be present. 
because %b *admits* unknown keys but %a does not. 

although I admit that property names can be much better .  


  That's one reason why I suggested control of this sort
  of thing should be a property of the operation, not of
  the operands.
  
  --
  ralph
  
  

arcadi .



Re: Vectorizing operators for Hashes

2002-10-31 Thread fearcadi
Larry Wall writes:
  On Thu, 31 Oct 2002, Me wrote:
  : That's one reason why I suggested control of this sort
  : of thing should be a property of the operation, not of
  : the operands.
  
  I think that by and large, the operator knows whether it wants to
  do union or intersection.  When you're doing «+», it's obviously
  union that you want, with undef defaulting to 0.  And «//» would
  want intersection.
  
  Larry
  
  
  

so is really going to the direction that many official operators
will be wysiwig Unicode staff like  «+» , and then for some slice of the
comunity there will be ( TeX - like ?? ) ascii shortcuts , because we
need them ( what was the length of the tread to figure out how to
write and read them ) . So perl take placeholders from Mathematica ,
vector operations from Matlab , and greek and all other funny
characters from TeX : 

use TeX;
\gamma = \alpha  \hyper[\sum] \beta ;

arcadi .



Re: Perl6 Operator List (REMAINING ISSUES)

2002-10-31 Thread fearcadi
Larry Wall writes:
  On Thu, 31 Oct 2002 [EMAIL PROTECTED] wrote:
  :   %a ^[op]= @b   #  hash v array
  :   @a ^[op]= %b   #  array v hash
  
  What would those mean?  Are you thinking only of hashes with numeric keys?
  
  Larry
  
  
  

no but hash can have property that tells how to turn its keys to
integer indexes if it fins itself  in the ^[op] situation . 
just like %hash can have a property that tells it how to behave in
regexp  /%hash/ . And then just like here there may be some default
value for that property . I dont know what it should be . is it sane ?

%hash is if_in_vectorized_op_map_keys_to_integers_as { some function
  returning integer }

arcadi .
 



Re: [RFC] Perl6 HyperOperator List

2002-10-31 Thread fearcadi
  Thats ugly, IMO.
  
  Now this is going to sound wild (probably) and I have not thought too much
  about it and there are probably others who can see the pitfalls quicker
  then me. But could () be available for hyper operators ?
  
  I will sit back now and watch the firewaorks, as I wont be in the UK
  on Nov 5 :-)
  
  Graham.
  
  
  

yes if you demand a prefix 

a ^(+=) b 

where ^ can be replaced  (almost ) everything . 

arcadi  .



Perl6 Operator List (REMAINING ISSUES)

2002-10-31 Thread fearcadi
Michael Lazzaro writes:
  OK, by my count -- after editing to reflect Larry's notes -- only a few 
  issues remain before the ops list can be completed.
  
  
  
  1) Need a definitive syntax for hypers,
   ^[op]  and  «op»
  have been most seriously proposed -- something that keeps a
  bracketed syntax, but solves ambiguity issues.
  
  2) Possible inclusion of unary prefix ^, meaning complement.
  (Assuming doesn't conflict with (1))
  
  3) Possible inclusion of like/unlike or similar as synonyms for ~~ 
  !~.  Which we don't have to decide now.
  
  
  
  All other op issues, by my count, revolve around the meanings of 
  specific hyperop constructs.  There is one, overriding question with 
  the hyperops, which is the precise relation between an op, an 
  assignment op, and their (three!) hyperop equivs:
  
A   op   B
A   op=  B
A ^[op]  B
A ^[op=] B
A ^[op]= B
  
  If we can formalize the precise relationship between the three hypers 
  in the presence of scalar and list (and hash?) values for A and B, I 
  believe we can answer nearly all the hyperop questions definitively.  

as I understand , every such construct will be macro preprocessed
parser and in real program ( that is in parrot ) there will be no
vector operations in perl sence , only as optimizations . so I think
that if we are talking about oprator list , we just can state ( and we 
did ) that such operators are present in language . their prcize
functionality may be defined or changed by pragma or module. 

what I want to say is that we definitely have ^[op] staff so somebody
in or out of sanity will ask ( or make a mistake ) what is %a ^[op] %b 
and the answer already is a question of ( Apo 29 ? ). the language
have beasts $x, y, %z and they can talh through  op , ^[op] , ...
so they will , or at least try . although by the laws of jungle
something can be made a taboo . But thats life... 

arcadi .



Re: UTF-8 and Unicode FAQ, demos

2002-10-31 Thread Michael Lazzaro

And if you really want to drool at all the neat glyphs that the 
wonderful, magical world of math has given us, check out:

http://www.unicode.org/charts/PDF/U2A00.pdf

 now *theres* some brackets!

MikeL



Re: Vectorizing operators for Hashes

2002-10-31 Thread Me
 On Thu, 31 Oct 2002, Me wrote:
 : That's one reason why I suggested control of this sort
 : of thing should be a property of the operation, not of
 : the operands.
 
 I think that by and large, the operator knows whether it wants to
 do union or intersection.  When you're doing +, it's obviously
 union that you want, with undef defaulting to 0.  And // would
 want intersection.

Ok. So I accidentally got something right! ; (control of this sort of
thing should be a property of the operation, not of the operands.)

There are clearly some operations where adverbs make sense.
Presumably one of the classes of op for which adverbs might
make sense is hyperop.

Assuming so, did my suggestion of ^adverb make sense to you
as a way to distinguish op and hyperop adverbs?

--
ralph



Re: Vectorizing operators for Hashes

2002-10-31 Thread fearcadi
Me writes:
   union: 
   intersection :
  
  %a ^is strict_keys;
  %b ^is no_strict_keys;
   
   in the resulting hash only ( and all ) keys of %a will be present. 
   because %b *admits* unknown keys but %a does not. 
  
  Yes, but the general case is that one wants to be
  able to control nuances of (hyper)operations, and
  Larry introduced adverbs for precisely that reason.
  
  Just because one can get away with controlling this
  particular issue via noun adjectives (variable properties)
  does not mean one should. (Although, conversely, just
  because adverbs seem more more appropriate in this
  case doesn't mean one shouldn't for some reason use
  properties as you suggest.)
  

there is one mor epossibility : 

temp sub infix:^[op] is force_hash_to_intersect ; 

( I'm compleatly not sure about that sintax )

sinse vectorization of any op is orthogonal concept to details of
that particular op , maybe we can controll behavior of that
vectorization  by ( ...? ) properties . 

we need it not only for hashes ; 
maybe somebody will wont  ( 1,2 ) ^[op] ( 1, 2, 3 ) to return array of 
length 3 ; 

arcadi 



RE: [RFC] Perl6 Operator List, Take 5

2002-10-31 Thread Brent Dax
Larry Wall:
# Perl 6 is written in Unicode.

Great.  That's a wonderful policy.  But it *shouldn't influence routine
coding in any way*.  I have no problem with user-defined Unicode
operators.  I have a *huge* problem with built-in Unicode operators, and
a gargantuan problem with built-in Unicode operators that are generally
useful.

I can honestly say at this point that I'd rather give up $iterator
than lose hyperops.  And I consider relegating them to the  
digraphs losing them, because I'm never going to be able to remember how
to type them, and neither will anybody else.

Let's look at this logically.  Here's all the punctuation (non-\w)
characters on my keyboard and what they do in Perl 6:

TERMOPERATORDOUBLE
OPERATOR
`   backticks   nonenone
'   string constantsnone**  none
   string constantsnonenone

#   comment comment comment

$   scalar sigilnonenone
@   array sigil nonenone
%   hash sigil  modulo  none

   sub sigil   junction and**  logical and
!   logical not none (?)none
^   complement  junction xor**  logical xor**
|   nonejunction or**   logical or

/   regex   divide  defined or (in
5.9)
*   list flatten*   multiplyexponent
-   numify and negate   subtraction
postdecrement
+   numify**addition
postincrement
~   stringify*  concat**smart
match

=   noneassignment
comparison
\   get reference   nonenone
..  method call**   method call**   range constructor
?   force to bool*  none**  trinary operator

,   nonelist composer   list composer
;   nonestatement end   statement end
(in parentheses)super-comma none
:   nonesuper-comma package
separator, trinary operator


( ) expression grouping sub parameters  yuck
{ } hash composing  hash subscripts yuck
block composing block composing yuck
[ ] array composing array subscriptsyuck
  iterator syntax comparison ops  shift-left, shift-right
UNUSED: 5   8   9

Items marked with a * are new, ** are changed.  There are twenty-two
'none's on that list, but none of them line up.  (Isn't Perl great?!?)

';;' is available (it doesn't mean anything in either term or operator
context), but it's really ugly.  The other possibilities I see there
have the same problem.

There are potentially some meaningless sequences, especially with
sigils, but those'll look quite cluttered.  Actually, one of the few
good meaningless ones is ^[op] (with the square brackets).  In term
context it would normally mean bitwise complement this array, and in
operator context it would mean add this array to an xor junction.  If
we lose xor junctions (which I'm not necessarily advocating, mind you),
this sequence is pretty much open.

Damn.  Larry, I don't envy you your job.  :^)

--Brent Dax [EMAIL PROTECTED]
@roles=map {Parrot $_} qw(embedding regexen Configure)

Wire telegraph is a kind of a very, very long cat. You pull his tail in
New York and his head is meowing in Los Angeles. And radio operates
exactly the same way. The only difference is that there is no cat.
--Albert Einstein (explaining radio)




Re: UTF-8 and Unicode FAQ, demos

2002-10-31 Thread Luke Palmer
 Mailing-List: contact [EMAIL PROTECTED]; run by ezmlm
 Date: Thu, 31 Oct 2002 10:11:00 -0800
 From: Michael Lazzaro [EMAIL PROTECTED]
 X-SMTPD: qpsmtpd/0.12, http://develooper.com/code/qpsmtpd/
 
 
 And if you really want to drool at all the neat glyphs that the 
 wonderful, magical world of math has given us, check out:
 
  http://www.unicode.org/charts/PDF/U2A00.pdf
 
  now *theres* some brackets!

Ooh!  Let's use 2AF7 and 2AF8 for qw!

 MikeL



Re: plaintive whine about 'for' syntax

2002-10-31 Thread Damian Conway
Ed Peschko wrote:

Larry Wall writes:



I think decent formatting would make it clearer:

fora;   b
   - $x is rw; y {
  $x = $y[5];
}



But this isn't very scalable:


Sure it is. You just have to think more two-dimensionally...

for  a;  b;  c;  d;  e
 -  $a_variable1 is rw, $a_variable2 is rw;
  $b_variable is rw;
   $c_variable  is rw;
$d_variable is rw;
 $e_variable1 is rw, $e_variable2 is rw
{
}

:-)

BTW, Both Larry and I do understand the appeal of interleaving
sources and iterators. We did consider it at some length back
in January, when we spent a week thrashing this syntax out.

Of course, I can't speak for Larry, but in the end I concluded
that interleaving iterator variables is a false win, since it
trades reduced syntactic complexity for increased semantic
complexity, but only really improves the readability of a
comparatively rare case.

Damian




Re: [RFC] Perl6 HyperOperator List

2002-10-31 Thread Damian Conway
Austin Hastings wrote:


In the C that I learned, the ^| ops were bitwise.

Likewise, the  || ops were lazy booleans.

So what's a single-letter boolean act like? Is it lazy? Does it retain
its bitwise-ness but (since boolean) force evaluation for 1 or 0 first?
I just don't understand what the implied behavior is, since the
reference is outside my experience.


Since they're producing a boolean result, both C? and C?| could be
implemented lazily. However, I suspect they mightn't be, just to keep
them consistent (in their evaluation of operands) with the other bitwise
ops.






What's $a?

1 | 5  10


Yes (by precedence)



Umm, is this wrong? 

Yep. Sorry.



(1|5)  10


Yes (explcitly).


This one is still correct.



traits = any ( ... )
requirements = ..  ..
if $requirements eq $traits

Should that be traits = all()?


No. Because later we say (effectively):

	print True love\n
	if all(desiderata) eq any(traits)

In other words we want *all* the desired characteristics to be matched
by *some* trait. If the comparison was Call(...) eq all(...), then
you're asking for every characteristic to be the same as every trait,
which obviously can't happen.

This is just a case where the logic of English phraseology has
several implicit assumptions that computational logic can't just
fudge over.



(In other words: Can you write Apoc.Flexible now, please?)


Well, I'd *like* to, but since that would involve giving up my first
vacation in two years, and consequently getting divorced...no.

;-)

Damian




Re: Perl6 Operator (REMAINING ISSUES)

2002-10-31 Thread Mark J. Reed
On 2002-10-31 at 12:45:23, David Wheeler wrote:
 Plus, it turns out not to be at all hard to type on Mac OS X. ;-)
Well, the angle quotes happen to fall within Latin-1, and so they're
easier to get to.  On Windows you can either set up special key mappings or
just type ALT+171 for « and ALT+187 for », which gets wearisome after
a while although you can get your fingers taught pretty quickly.   
Vim and emacs and XIM all take care of the UNIX case.

Once you wander away from Latin-1 into the more general world
of Unicode, you start running into trouble on the input side.
On Windows you pretty much have to use the Character map accessory.
Emacs and vim still work on UNIX, but I don't know of a XIM
implementation for general Unicode.  (Although if you log into
your Unix machine using Kermit-95, it has a keystroke sequence for
arbitrary Unicode input).

Presumably, though, if Perl did have Unicode operators, it would
also have an ASCII alternative, even if only something like
\u00ab and \u00bb.

-- 
Mark REED| CNN Internet Technology
1 CNN Center Rm SW0831G  | [EMAIL PROTECTED]
Atlanta, GA 30348  USA   | +1 404 827 4754



Re: UTF-8 operator possibilities

2002-10-31 Thread Michael Lazzaro

On Thursday, October 31, 2002, at 12:18  PM, Chip Salzenberg wrote:

According to Michael Lazzaro:

   ?? ?? ?? ??? ??? ??? ??? ??? ???
   ??? ??? ??? ??? ??? ??? ??? ??? ???
   ??? ???
   ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ???


Am I the only person who discovered Korean spam on p6-lang?


Rats.  I was trying to write mostly Greek spam.  ;-)

MikeL




Re: Vectorizing operators for Hashes

2002-10-31 Thread Austin Hastings

--- Larry Wall [EMAIL PROTECTED] wrote:
 On Thu, 31 Oct 2002, Markus Laire wrote:

 The really great thing about the French quotes is that they visually
 keep the user aware of the composition.  «+=» is obviously a variety
 of
 +=, whereas ^+= is not obvious, though shorter.  (Square brackets are
 even better at that, but have other problems.)

I'm still unconvinced that square brackets won't work. 

But compared to Larry giving up «foo bar baz», «sont petits pommes de
terre»


__
Do you Yahoo!?
HotJobs - Search new jobs daily now
http://hotjobs.yahoo.com/



Re: plaintive whine about 'for' syntax

2002-10-31 Thread fearcadi
Damian Conway writes:
  
  BTW, Both Larry and I do understand the appeal of interleaving
  sources and iterators. We did consider it at some length back
  in January, when we spent a week thrashing this syntax out.
  
  Of course, I can't speak for Larry, but in the end I concluded
  that interleaving iterator variables is a false win, since it
  trades reduced syntactic complexity for increased semantic
  complexity, but only really improves the readability of a
  comparatively rare case.
  
  Damian
  

but why ? I am just curious about details. 
is it complicated for immediate component of for loop ( mentioned by 
Larry Wall ) to cut-and-paste to reconstruct the original stream list
and block signature. 


1) for  a - $x ; b - $y   { ... } 

 ===

2) for  a ; b - $x ; $y   { ... } 

at the price of - not being consistently closure declarator
*everywhere* and having a bit different meaning inside for ( and only
for , because all other topicalizers dont know about streams -- am I
right ?) . Which it is already not exactly , since immediate component 
of for loop preprocess the closure signature to match the streams . 

and besides, it seems to me that both 1) and 2) can coexist since  for 
loop can controll what happens between for and {...} . but maybe I
am wrong. 

I am just curious . 

arcadi . 



Re: UTF-8 and Unicode FAQ, demos

2002-10-31 Thread Austin Hastings

--- Luke Palmer [EMAIL PROTECTED] wrote:
  And if you really want to drool at all the neat glyphs that the 
  wonderful, magical world of math has given us, check out:
  
   http://www.unicode.org/charts/PDF/U2A00.pdf
  
   now *theres* some brackets!
 
 Ooh!  Let's use 2AF7 and 2AF8 for qw!

Frankly, I don't know HOW we've lived for so long without larger than
and smaller than operators. 

=Austin


__
Do you Yahoo!?
HotJobs - Search new jobs daily now
http://hotjobs.yahoo.com/



Re: [RFC] Perl6 HyperOperator List

2002-10-31 Thread Smylers
Graham Barr wrote:

 On Thu, Oct 31, 2002 at 12:16:34PM +, [EMAIL PROTECTED] wrote:

  ... using backtick in vector operators ... A pair of backticks could
  be used if the vector-equals distinction is required:
  
@a `+`= @b;
@a `+=` @b;
 
 Thats ugly, IMO.

Oh, I wasn't claiming that it's pretty.  I think we're past being able
to find something that's pretty.

In general I find backticks fairly jarring on the eyes, but they have to
be used for _something_ ...

Smylers



Re: plaintive whine about 'for' syntax

2002-10-31 Thread Simon Cozens
[EMAIL PROTECTED] writes:
 1) for  @a - $x ; @b - $y   { ... } 
 
  ===
 
 2) for  @a ; @b - $x ; $y   { ... } 

You've got it! Semicolon naturally breaks things apart, not groups them
together!

-- 
Anything to do with HTML processing /usually/ involves a pact
with an evil supernatural being, I find.
-- Sean Burke



Primitive Boolean type?

2002-10-31 Thread Michael Lazzaro

While writing documentation: a trivial question on the boolean type, 
Cbit:

my bit $light_switch;

Q: Can bits/bools be undefined?

Perl conventions would indicate yes.  Does that mean that an array of 
bits:

   my bit bitfield;

takes up, at minimum, two bits per, um, bit?

Sorry if this question is as stupid as it looks.  I'm just worried that 
maybe it isn't.

MikeL



RE: [RFC] Perl6 Operator List, Take 5

2002-10-31 Thread Erik Steven Harrison
 
--

On Thu, 31 Oct 2002 11:26:13  
 Brent Dax wrote:

I can honestly say at this point that I'd rather give up $iterator
than lose hyperops. 

I was thinking the same thing not long ago. But now 
that I think about it, is operator ever going to be 
confused for $File_Handle? The vector operation cosy 
up well to the concept of iteration anyway. Hell, if 
were desperate (and I think we are) then why not just 
double the brackets to [op] or [op]. Sure it's 
ugly, but I prefer it to ^[op] any day of the week, 
and it's not going to be ambiguous.


All that said, can anyone come up with a case to 
confuse op with $File_Handle?


-Erik

 And I consider relegating them to the  
digraphs losing them, because I'm never going to be able to remember how
to type them, and neither will anybody else.

Let's look at this logically.  Here's all the punctuation (non-\w)
characters on my keyboard and what they do in Perl 6:

   TERMOPERATORDOUBLE
OPERATOR
`  backticks   nonenone
'  string constantsnone**  none
  string constantsnonenone

#  comment comment comment

$  scalar sigilnonenone
@  array sigil nonenone
%  hash sigil  modulo  none

  sub sigil   junction and**  logical and
!  logical not none (?)none
^  complement  junction xor**  logical xor**
|  nonejunction or**   logical or

/  regex   divide  defined or (in
5.9)
*  list flatten*   multiplyexponent
-  numify and negate   subtraction
postdecrement
+  numify**addition
postincrement
~  stringify*  concat**smart
match

=  noneassignment
comparison
\  get reference   nonenone
.. method call**   method call**   range constructor
?  force to bool*  none**  trinary operator

,  nonelist composer   list composer
;  nonestatement end   statement end
(in parentheses)   super-comma none
:  nonesuper-comma package
separator, trinary operator


( )expression grouping sub parameters  yuck
{ }hash composing  hash subscripts yuck
   block composing block composing yuck
[ ]array composing array subscriptsyuck
 iterator syntax comparison ops  shift-left, shift-right
UNUSED:5   8   9

Items marked with a * are new, ** are changed.  There are twenty-two
'none's on that list, but none of them line up.  (Isn't Perl great?!?)

';;' is available (it doesn't mean anything in either term or operator
context), but it's really ugly.  The other possibilities I see there
have the same problem.

There are potentially some meaningless sequences, especially with
sigils, but those'll look quite cluttered.  Actually, one of the few
good meaningless ones is ^[op] (with the square brackets).  In term
context it would normally mean bitwise complement this array, and in
operator context it would mean add this array to an xor junction.  If
we lose xor junctions (which I'm not necessarily advocating, mind you),
this sequence is pretty much open.

Damn.  Larry, I don't envy you your job.  :^)

--Brent Dax [EMAIL PROTECTED]
@roles=map {Parrot $_} qw(embedding regexen Configure)

Wire telegraph is a kind of a very, very long cat. You pull his tail in
New York and his head is meowing in Los Angeles. And radio operates
exactly the same way. The only difference is that there is no cat.
--Albert Einstein (explaining radio)





Get 25MB of email storage with Lycos Mail Plus!
Sign up today -- http://www.mail.lycos.com/brandPage.shtml?pageId=plus 



RE: [RFC] Perl6 Operator List, Take 5

2002-10-31 Thread fearcadi
Erik Steven Harrison writes:
  
  
  All that said, can anyone come up with a case to 
  confuse op with $File_Handle?
  
  

it seems that parser cannot confuse them because op is operator and
parser expect operator, while $File_Handle is a term . 

but human can confuse .
I personally also like op sintax. 

arcadi .



RE: [RFC] Perl6 Operator List, Take 5

2002-10-31 Thread Brent Dax
Erik Steven Harrison:
# All that said, can anyone come up with a case to 
# confuse op with $File_Handle?

If you assume infinite lookahead, it's fine, but if not...

something ...

Is that a call to

sub something() returns(IO::Handle)

or a hypered

sub operator:something($operand:)

?

--Brent Dax [EMAIL PROTECTED]
@roles=map {Parrot $_} qw(embedding regexen Configure)

Wire telegraph is a kind of a very, very long cat. You pull his tail in
New York and his head is meowing in Los Angeles. And radio operates
exactly the same way. The only difference is that there is no cat.
--Albert Einstein (explaining radio)




Re: plaintive whine about 'for' syntax

2002-10-31 Thread Iain 'Spoon' Truskett
* Ed Peschko ([EMAIL PROTECTED]) [01 Nov 2002 07:19]:

[...]
 for @a - $a_variable1 is rw, $a_variable2 is rw;
   @b - $b_variable  is rw;
   @c - $c_variable  is rw;
   @d - $d_variable  is rw;
   @e - $e_variable1 is rw, $e_variable2 is rw;
 {
 }

 is much, *much* clearer. IMO the current 'for' syntax suffers from
 action at a distance, even if that distance is within the same line.
 Related things aren't paired up nearly close enough to each other.

Give this man a +1. I do prefer to have associated things placed
with each other. And, as Simon pointed out, ';' is used to break
things apart, thus the syntax above makes somewhat more sense.

The best part is that I can easily comment out, delete, add part of
the expression without worrying that I'm deleting the wrong thing.

It may not be often that I will use the construct for multiple
iterators, but I can foreseeably use at least 2, and with the
added ease I can imagine using more =)


cheers,
-- 
Iain.



Re: [RFC] Perl6 Operator List, Take 5

2002-10-31 Thread Luke Palmer
 Mailing-List: contact [EMAIL PROTECTED]; run by ezmlm
 Date: Thu, 31 Oct 2002 14:45:16 -0800
 From: Erik Steven Harrison [EMAIL PROTECTED]
 Cc: [EMAIL PROTECTED]
 X-Sent-Mail: off
 Reply-To: [EMAIL PROTECTED]
 X-Sender-Ip: 152.18.50.63
 Organization: Angelfire  (http://email.angelfire.mailcity.lycos.com:80)
 Content-Language: en
 X-SMTPD: qpsmtpd/0.12, http://develooper.com/code/qpsmtpd/
 
  
 --
 
 On Thu, 31 Oct 2002 11:26:13  
  Brent Dax wrote:
 
 I can honestly say at this point that I'd rather give up $iterator
 than lose hyperops. 
 
 I was thinking the same thing not long ago. But now 
 that I think about it, is operator ever going to be 
 confused for $File_Handle? The vector operation cosy 
 up well to the concept of iteration anyway. Hell, if 
 were desperate (and I think we are) then why not just 
 double the brackets to [op] or [op]. Sure it's 
 ugly, but I prefer it to ^[op] any day of the week, 
 and it's not going to be ambiguous.
 
 All that said, can anyone come up with a case to 
 confuse op with $File_Handle?

sub postfix:bar returns handle;
$y = undef bar;

That has two syntactically valid interpretations.  It wouldn't take
even that much to confuse the parser, though.

Luke



Re: Primitive Boolean type?

2002-10-31 Thread David Wheeler
On Thursday, October 31, 2002, at 02:43  PM, Michael Lazzaro wrote:


Q: Can bits/bools be undefined?

Perl conventions would indicate yes.


IIRC, native data types, which are all lowercase (e.g., int, bit, long, 
etc.) cannot be undef. However, their class equivalents (e.g., Int, 
Bit, Long, etc) can be undef.

HTH,

David

--
David Wheeler AIM: dwTheory
[EMAIL PROTECTED] ICQ: 15726394
http://david.wheeler.net/  Yahoo!: dew7e
   Jabber: [EMAIL PROTECTED]



Re: Perl6 Operator (REMAINING ISSUES)

2002-10-31 Thread Markus Laire
On 31 Oct 2002 at 15:59, Mark J. Reed wrote:

 Once you wander away from Latin-1 into the more general world
 of Unicode, you start running into trouble on the input side.
 On Windows you pretty much have to use the Character map accessory.
 Emacs and vim still work on UNIX, but I don't know of a XIM
 implementation for general Unicode.  (Although if you log into your
 Unix machine using Kermit-95, it has a keystroke sequence for
 arbitrary Unicode input).

Emacs and vim also works on Windows, not just UNIX.

-- 
Markus Laire 'malaire' [EMAIL PROTECTED]





Re: [RFC] Perl6 HyperOperator List

2002-10-31 Thread Austin Hastings

--- Luke Palmer [EMAIL PROTECTED] wrote:
  --- Damian Conway [EMAIL PROTECTED] wrote:
   Austin Hastings wrote:
traits = any ( ... )
requirements = ..  ..
if $requirements eq $traits

Should that be traits = all()?
   
   No. Because later we say (effectively):
   
 print True love\n
 if all(@desiderata) eq any(@traits)
   
   In other words we want *all* the desired characteristics to be
   matched
   by *some* trait. If the comparison was Call(...) eq all(...),
 then
   you're asking for every characteristic to be the same as every
 trait,
   which obviously can't happen.
   
   This is just a case where the logic of English phraseology has
   several implicit assumptions that computational logic can't just
   fudge over.
  
  Does this imply some sort of depth matching is required for these
  expressions?
  
  In this case, there's 
  
  T = tall  dark  handsome
  D = (tall  dark  handsome) | (Australian) | (rich  old)
  
  So when I say:
  
  all(@desiderata)   # I hated that ^[!]() poem
  
  does that implicitly search down until it finds a singleton
  (Australian) or a conjunction (old  rich)?
  
  And likewise does saying 
  
  any(@traits)
  
  do some sort of implicit (de) construction looking for a singleton
 or a
  disjunction?
  
  Obviously, yes.
  
  So you're saying that the all() can't work at the a|b|c level,
 because
  that would be conjunctive disjunction.  (Doc, tell me straight: how
  long do I have?) So the evaluation alternates through the
  possibilities, looking for a chance to apply all.
 
 I think you've got it mixed up: all() and any() don't work with junk,
 they _are_ junk.
 
 any($a) is just $a
 all($a) is just $a
 
 It doesn't do matching, not unless it collapses right there.  So the
 only time it does matching is when it collapses, which has nothing to
 do with whether all() or any() are present.  It has to do with
 whether
 a value is a junction.
 
 all(1, 2, 3) === 1  2  3
 any(1  2  3) is still just 1  2  3
 
 It matches:
 
 all(1, 2, 3)  $x
 1  2  3 $x
 
 because the junction is forced to collapse there.  Understand?

Maybe I just think differently.  When I'm trying to actually DO the
comparison, I'm forcing at least a partial collapse, no?

I mean, maybe the traits are 

tall  dark  old  handsome  Australian

so the three choices collapse to two, either of which would match.

But regardless, when the actual == appears in the code, some
determination needs to be made in order to figure out which way to go.

So I'm trying to build rules in my brain for how these things are
compatible-ized?

And I'm trying to figure out when to specify which junction.

=Austin



__
Do you Yahoo!?
HotJobs - Search new jobs daily now
http://hotjobs.yahoo.com/



Re: Perl6 Operator List

2002-10-31 Thread fearcadi
Larry Wall writes:
  
  sub postfix:! (num $x) { $x  2 ?? $x :: $x * ($x - 1) ! }
  
  which could be fixed with the _:
  
  sub postfix:! (num $x) { $x  2 ?? $x :: $x * ($x - 1) _! }
  
  Weird, but it's all consistent with the distinction we're already
  making on curlies, which gave a great increase in readability.
  

does it mean that *all* postfix operators have to be attached
without space to their operand or used with space eater modifyer 

or 

only those for which parser ( or we ) knows that they may be confused 
with binary op or term ? 

probably the same question for prefix operators . 

aracdi  



Re: [RFC] Perl6 HyperOperator List

2002-10-31 Thread Luke Palmer
Oops.  About that op thing, I was wrong.  Though there is a case
that does it:

sub bar();
sub postfix:bar($x) returns IO::Handle;
$x = length bar;

If it's possible to have a distinct sub and an operator with the same
name.  If not, I believe the distinction is precisely the same as that
of named unary op with its argument optional.  Except with infinite
lookahead.  Ummm, okay, it's not possible.  Because of less than and
friends, it's less possible than [op].

Luke



Question about for loop

2002-10-31 Thread fearcadi

for a - $x, $y { ... $x is topic ... } 

for a  ; b - 
$x, $y  ; $z { ... WHAT is topic ?  ... } 

what is topic in multi stream loop ? 

arcadi 



Re: [RFC] Perl6 HyperOperator List

2002-10-31 Thread Luke Palmer
 Date: Thu, 31 Oct 2002 15:16:17 -0800 (PST)
 From: Austin Hastings [EMAIL PROTECTED]
 Reply-To: [EMAIL PROTECTED]
 Cc: [EMAIL PROTECTED], [EMAIL PROTECTED]
 
 
 --- Luke Palmer [EMAIL PROTECTED] wrote:
   --- Damian Conway [EMAIL PROTECTED] wrote:
Austin Hastings wrote:
 traits = any ( ... )
 requirements = ..  ..
 if $requirements eq $traits
 
 Should that be traits = all()?

No. Because later we say (effectively):

print True love\n
if all(@desiderata) eq any(@traits)

In other words we want *all* the desired characteristics to be
matched
by *some* trait. If the comparison was Call(...) eq all(...),
  then
you're asking for every characteristic to be the same as every
  trait,
which obviously can't happen.

This is just a case where the logic of English phraseology has
several implicit assumptions that computational logic can't just
fudge over.
   
   Does this imply some sort of depth matching is required for these
   expressions?
   
   In this case, there's 
   
   T = tall  dark  handsome
   D = (tall  dark  handsome) | (Australian) | (rich  old)
   
   So when I say:
   
   all(@desiderata)   # I hated that ^[!]() poem
   
   does that implicitly search down until it finds a singleton
   (Australian) or a conjunction (old  rich)?
   
   And likewise does saying 
   
   any(@traits)
   
   do some sort of implicit (de) construction looking for a singleton
  or a
   disjunction?
   
   Obviously, yes.
   
   So you're saying that the all() can't work at the a|b|c level,
  because
   that would be conjunctive disjunction.  (Doc, tell me straight: how
   long do I have?) So the evaluation alternates through the
   possibilities, looking for a chance to apply all.
  
  I think you've got it mixed up: all() and any() don't work with junk,
  they _are_ junk.
  
  any($a) is just $a
  all($a) is just $a
  
  It doesn't do matching, not unless it collapses right there.  So the
  only time it does matching is when it collapses, which has nothing to
  do with whether all() or any() are present.  It has to do with
  whether
  a value is a junction.
  
  all(1, 2, 3) === 1  2  3
  any(1  2  3) is still just 1  2  3
  
  It matches:
  
  all(1, 2, 3)  $x
  1  2  3 $x
  
  because the junction is forced to collapse there.  Understand?
 
 Maybe I just think differently.  When I'm trying to actually DO the
 comparison, I'm forcing at least a partial collapse, no?
 
 I mean, maybe the traits are 
 
 tall  dark  old  handsome  Australian
 
 so the three choices collapse to two, either of which would match.
 
 But regardless, when the actual == appears in the code, some
 determination needs to be made in order to figure out which way to go.
 
 So I'm trying to build rules in my brain for how these things are
 compatible-ized?
 
 And I'm trying to figure out when to specify which junction.

sub hyperless ($left, $right) {
given {.isa Disjunction} {
when $left {
? grep { hyperless $_, $right } states($left)
when $right {
? grep { hyperless $left, $_ } states($right)
otherwise {
! grep - $a { grep - $b { $b  $a } states($right) }
states ($left); }  
}
}

Assuming states() on a nonjunction just returns its argument.  This
code just gives true or false, not the junction of matching states
like it should.

I think what I have there is right, though I can't be sure.

Luke



Re: [RFC] Perl6 HyperOperator List

2002-10-31 Thread Deborah Ariel Pickett
  On Thu, Oct 31, 2002 at 12:16:34PM +, [EMAIL PROTECTED] wrote:
   ... using backtick in vector operators ... A pair of backticks could
   be used if the vector-equals distinction is required:
 @a `+`= @b;
 @a `+=` @b;
  Thats ugly, IMO.
 Oh, I wasn't claiming that it's pretty.  I think we're past being able
 to find something that's pretty.
 In general I find backticks fairly jarring on the eyes, but they have to
 be used for _something_ ...

I hear there's a vacancy for a qw(...) equivalent now . . .

No, I'm not really suggesting this.  But I am reminded by this whole
endeavour of a certain text adventure.

 get underscore
Taken.
 get bracket
Taken.
 get guillemot
Taken.
 get caret
Taken.
 get backtick
Oops!  While you were reaching for the backtick, you drop the guillemot,
and both tumble to the ground.

(Whine: my Perl undergrad students are too young to remember or
appreciate text adventures.  At least some of you oldsters here will
understand.)
-- 
Debbie Pickett http://www.csse.monash.edu.au/~debbiep [EMAIL PROTECTED]
Is it, err, Mildred? O.K., no. How 'bout - Diana? Rachel?  Ariel, her name is
Ariel. - _The Little Mermaid_



RE: Perl6 Operator (REMAINING ISSUES)

2002-10-31 Thread Brent Dax
Markus Laire:
# Emacs and vim also works on Windows, not just UNIX.

So does DOS 'edit'.  That doesn't mean Windows users use it.  Windows
users want tools that look and act like Windows tools--if they didn't,
they'd be using another OS.  Neither GNU emacs nor xemacs fits the bill,
and I doubt vim does either.

I'm an aberration--I use Windows, but I have a Cygwin toolkit installed
and use it regularly.  Still, I use VS.Net (with Visual Perl) for my
editing, not a Unix editor.  When telnetting, I use emacs, so I
installed XEmacs, used it for a while, and decided I didn't like it for
my local work.  It had some really cool features--I was *very*
pleasantly surprised at how nicely it meshed with CVS--but it just
didn't fit my Windows-shaped brain.

You can bet that if I, a Perl core hacker who keeps two copies of
cmd.exe open at all times with c:\cygwin\bin in his path, am not going
to use XEmacs, your average Joe who downloads ActiveState Perl 6 to test
his hit-counter script won't use emacs or vim either.

--Brent Dax [EMAIL PROTECTED]
@roles=map {Parrot $_} qw(embedding regexen Configure)

Wire telegraph is a kind of a very, very long cat. You pull his tail in
New York and his head is meowing in Los Angeles. And radio operates
exactly the same way. The only difference is that there is no cat.
--Albert Einstein (explaining radio)




Re: [RFC] Perl6 HyperOperator List

2002-10-31 Thread Deborah Ariel Pickett
  get guillemot
 Taken.

Extra credit for those of you who remembered that that's a bird, not a
punctuation mark.

-- 
Debbie Pickett http://www.csse.monash.edu.au/~debbiep [EMAIL PROTECTED]
Is it, err, Mildred? O.K., no. How 'bout - Diana? Rachel?  Ariel, her name is
Ariel. - _The Little Mermaid_



Re: [RFC] Perl6 HyperOperator List

2002-10-31 Thread Michael Lazzaro

On Thursday, October 31, 2002, at 03:47  PM, Deborah Ariel Pickett 
wrote:
(Whine: my Perl undergrad students are too young to remember or
appreciate text adventures.  At least some of you oldsters here will
understand.)


Hey!  We're not old, we're just version 1.0!

Can we have a grue operator?  It would be invisible, and eat 
everything it operated on.  Oh, wait... I think Damian already has that 
module.

MikeL



Re: Perl6 Operator (REMAINING ISSUES)

2002-10-31 Thread Ed Peschko
 actually , ones we decide that ^ *is necessary for vectorization , we
 can allow other brackets , optional brackets ( where unambiguous ) ,
 and spaces inside the brackets : 
 
 a ^+= b 
 a ^[+]= b 
 a ^(+)= b 
 a ^( + )= b 
 a ^{ + }= b 
 a ^{+}= b 
 a ^[ + ]= b 
  

right, and what does this all mean? I have yet to see a good meaning for 
array ^[+]= array2 ...

Perhaps, having just ^ as a vector op, and using ^[op] to disambiguate (or 
as an equivalent) is the way to go.

Ed



Re: plaintive whine about 'for' syntax

2002-10-31 Thread John Siracusa
On 10/31/02 5:33 PM, [EMAIL PROTECTED] wrote:
 Damian Conway writes:
 BTW, Both Larry and I do understand the appeal of interleaving
 sources and iterators. We did consider it at some length back
 in January, when we spent a week thrashing this syntax out.
 
 Of course, I can't speak for Larry, but in the end I concluded
 that interleaving iterator variables is a false win, since it
 trades reduced syntactic complexity for increased semantic
 complexity, but only really improves the readability of a
 comparatively rare case.
 
 but why ? I am just curious about details.

Yeah, I'd like to hear those details too, because the alternate syntax:

 1) for  @a - $x ; @b - $y   { ... }

sure looks a lot more attractive and sensible to me, and I agree with all
the arguments in favor of it so far.  In particular:

* No look here, then look there connection between (possibly) widely
separated items.

* Simple to add or remove/comment-out individual stream/item(s) pairs
without having to count what are essentially positional parameters to make
sure you haven't mis-mapped anything in the process.

* More familiar use of the semicolon (IMO)

-John




Re: [RFC] Perl6 HyperOperator List

2002-10-31 Thread Andrew Wilson
On Fri, Nov 01, 2002 at 07:54:01AM +1100, Damian Conway wrote:
 Austin Hastings wrote:
 traits = any ( ... )
 requirements = ..  ..
 if $requirements eq $traits
 
 Should that be traits = all()?
 
 No. Because later we say (effectively):
 
   print True love\n
   if all(desiderata) eq any(traits)
 
 In other words we want *all* the desired characteristics to be matched
 by *some* trait. If the comparison was Call(...) eq all(...), then
 you're asking for every characteristic to be the same as every trait,
 which obviously can't happen.
 
 This is just a case where the logic of English phraseology has
 several implicit assumptions that computational logic can't just
 fudge over.

I don't understand this either, but my quibble is where did the all in
the all(desiderata) come from?  Lets see if I've got this straight

a  b is equivalent to all(a, b)
x | y is equivalent to any(x, y)

Yes?

so:

  all(a, b) eq any(a, b, c) 

should be true because all() of a and b are in the any() list.  Yes?

If I'm right about that, I would expect

  (a  b) | (c  d) eq any(a, e, g)
 
to be false because it should try ANY of the two junks (a  b) or  
(c  d) the first fails because there is no b and the second fails
because there is no c and no d.  I would also expect

  (a  b) | (c  d) | g eq any(a, e, g)

to be true because any() of the terms (g in this case) on the left is
fully satisfied by terms on the right.  In the original example the
desiderata is an | junk at the topmost level.  I don't see why it
suddenly gets all() wrapped around it.  Wouldn't that just be

  all[  any all(), all(), all()  ]

which is the same as

  any all(), all(), all() 

I'm not sure I'm explaining this very well, let me try with the example
that's giving me bother.

 $requirements = tall  dark  handsome
   | old  rich
   | Australian;

 for  - $candidate {
 my $traits = any( split /ws/, $candidate );
 print True love: $candidate\n
 if $requirements eq $traits;
 }

Lets say that $candidate = tall dark rich Australian, traits then
becomes any(tall, dark, rich, Australian).  So, does
$requirements eq $traits?  To me that expands to:

(
  (
(tall eq tall)   or \
(tall eq dark)   or   True because tall eq tall
(tall eq rich)   or  
(tall eq Australian)/
  ) AND (
(dark eq tall)   or \
(dark eq dark)   or   True because dark eq dark
(dark eq rich)   or
(dark eq Australian)/
  ) AND (
(handsome eq tall)   or \
(handsome eq dark)   or   False no matches
(handsome eq rich)   or
(handsome eq Australian)/
  )
  
) ***OR*** (

  (
(old eq tall)or \
(old eq dark)or   False no matches
(old eq rich)or
(old eq Australian) /
  ) AND (
(rich eq tall)   or \
(rich eq dark)   or   True because rich eq rich 
(rich eq rich)   or
(rich eq Australian)/
  )
  
) ***OR*** (

  (Australian eq tall) or \
  (Australian eq dark) or   True because Australian eq Australian
  (Australian eq rich) or
  (Australian eq Australian)  /
) 

Junk 1: tall  dark  handsome
Junk 2: old  rich
Junk 3: Australian;

Junk 1 fails because the candidate is not handsome.  Junk 2 fails because
the candidate is not old.  Junk 3 succeeds because the candidate is
Australian.

This means that the candidate matches overall because junks 1, 2 and 3
are related by | which is any.  I don't see how or why you would wrap an
all() around that.  There is all()ness going on, but it's represented in
the above by the ands which are in turn grouped with any (the ors).
Why isn't this example

print True love\n
if any(desiderata) eq any(traits)

Does whether it's any() or all() not depend on what the top level
operator in the junction is?  Am I missing something?

andrew
-- 
Gemini: (May 21 - June 21)
You will be the first one put up against the wall in next week's bloody
revolution in skin care.



Re: [RFC] Perl6 HyperOperator List

2002-10-31 Thread Luke Palmer
 Mailing-List: contact [EMAIL PROTECTED]; run by ezmlm
 Date: Fri, 1 Nov 2002 03:08:37 +
 From: Andrew Wilson [EMAIL PROTECTED]
 Mail-Followup-To: [EMAIL PROTECTED] [EMAIL PROTECTED]
 Content-Disposition: inline
 X-SMTPD: qpsmtpd/0.12, http://develooper.com/code/qpsmtpd/
 
 On Fri, Nov 01, 2002 at 07:54:01AM +1100, Damian Conway wrote:
  Austin Hastings wrote:
  traits = any ( ... )
  requirements = ..  ..
  if $requirements eq $traits
  
  Should that be traits = all()?
  
  No. Because later we say (effectively):
  
  print True love\n
  if all(@desiderata) eq any(@traits)
  
  In other words we want *all* the desired characteristics to be matched
  by *some* trait. If the comparison was Call(...) eq all(...), then
  you're asking for every characteristic to be the same as every trait,
  which obviously can't happen.
  
  This is just a case where the logic of English phraseology has
  several implicit assumptions that computational logic can't just
  fudge over.
 
 I don't understand this either, but my quibble is where did the all in
 the all(@desiderata) come from?  

First, I'd like to say that your explanation was immaculate.  You
understand junctions perfectly, from what I can tell.

I think Damian was ignoring the the top level any() in order to make
the explanation clearer (or forgot about it ;).  Consider it as though
@desiderata contained the (all) states of only one of the (any) states
in his $requirements.  I think that's what (effectively) meant. 

Indeed, worry not.  It was just a bit of an oversimplification.

Luke

 Lets see if I've got this straight
 
 a  b is equivalent to all(a, b)
 x | y is equivalent to any(x, y)
 
 Yes?
 
 so:
 
   all(a, b) eq any(a, b, c) 
 
 should be true because all() of a and b are in the any() list.  Yes?
 
 If I'm right about that, I would expect
 
   (a  b) | (c  d) eq any(a, e, g)
  
 to be false because it should try ANY of the two junks (a  b) or  
 (c  d) the first fails because there is no b and the second fails
 because there is no c and no d.  I would also expect
 
   (a  b) | (c  d) | g eq any(a, e, g)
 
 to be true because any() of the terms (g in this case) on the left is
 fully satisfied by terms on the right.  In the original example the
 @desiderata is an | junk at the topmost level.  I don't see why it
 suddenly gets all() wrapped around it.  Wouldn't that just be
 
   all[  any all(), all(), all()  ]
 
 which is the same as
 
   any all(), all(), all() 
 
 I'm not sure I'm explaining this very well, let me try with the example
 that's giving me bother.
 
  $requirements = tall  dark  handsome
| old  rich
| Australian;
 
  for  - $candidate {
  my $traits = any( split /ws/, $candidate );
  print True love: $candidate\n
  if $requirements eq $traits;
  }
 
 Lets say that $candidate = tall dark rich Australian, traits then
 becomes any(tall, dark, rich, Australian).  So, does
 $requirements eq $traits?  To me that expands to:
 
 (
   (
 (tall eq tall)   or \
 (tall eq dark)   or   True because tall eq tall
 (tall eq rich)   or  
 (tall eq Australian)/
   ) AND (
 (dark eq tall)   or \
 (dark eq dark)   or   True because dark eq dark
 (dark eq rich)   or
 (dark eq Australian)/
   ) AND (
 (handsome eq tall)   or \
 (handsome eq dark)   or   False no matches
 (handsome eq rich)   or
 (handsome eq Australian)/
   )
   
 ) ***OR*** (
 
   (
 (old eq tall)or \
 (old eq dark)or   False no matches
 (old eq rich)or
 (old eq Australian) /
   ) AND (
 (rich eq tall)   or \
 (rich eq dark)   or   True because rich eq rich 
 (rich eq rich)   or
 (rich eq Australian)/
   )
   
 ) ***OR*** (
 
   (Australian eq tall) or \
   (Australian eq dark) or   True because Australian eq Australian
   (Australian eq rich) or
   (Australian eq Australian)  /
 ) 
 
 Junk 1: tall  dark  handsome
 Junk 2: old  rich
 Junk 3: Australian;
 
 Junk 1 fails because the candidate is not handsome.  Junk 2 fails because
 the candidate is not old.  Junk 3 succeeds because the candidate is
 Australian.
 
 This means that the candidate matches overall because junks 1, 2 and 3
 are related by | which is any.  I don't see how or why you would wrap an
 all() around that.  There is all()ness going on, but it's represented in
 the above by the ands which are in turn grouped with any (the ors).
 Why isn't this example
 
   print True love\n
   if any(@desiderata) eq any(@traits)
 
 Does whether it's any() or all() not depend on what the top level
 operator in the junction is?  Am I missing something?
 
 andrew
 -- 
 Gemini: (May 21 - June 21)
 You will be the first one put up against the wall in next week's bloody
 revolution in skin care.
 

RE: [RFC] Perl6 Operator List, Take 5

2002-10-31 Thread Larry Wall
On Fri, 1 Nov 2002 [EMAIL PROTECTED] wrote:
: Erik Steven Harrison writes:
:   
:   
:   All that said, can anyone come up with a case to 
:   confuse op with $File_Handle?
:   
:   
: 
: it seems that parser cannot confuse them because op is operator and
: parser expect operator, while $File_Handle is a term . 

All unary operators show up when a term is expected, not an operator.

Larry




Re: Primitive Boolean type?

2002-10-31 Thread Larry Wall
On Thu, 31 Oct 2002, Michael Lazzaro wrote:
: While writing documentation: a trivial question on the boolean type, 
: Cbit:

Please don't think of Cbit as a boolean type.  There is no boolean
type in Perl, only a boolean context.  Or looking at it from the
other direction, *every* type is a boolean type.

: Does that mean that an array of bits:
: 
: my bit bitfield;
: 
: takes up, at minimum, two bits per, um, bit?

Just one per.

Larry




Re: [RFC] Perl6 Operator List, Take 5

2002-10-31 Thread Dave Storrs


On Wed, 30 Oct 2002, Larry Wall wrote:

 If no one saw them then it could well be a problem on my end.
 I'm trying to use a mailer (pine) that doesn't know about UTF-8 in

 a «+» b

I'm using Pine 4.33 on FreeBSD 4.3, and I see these fine.

--Dks





Re: [RFC] Perl6 HyperOperator List

2002-10-31 Thread Larry Wall
On Fri, 1 Nov 2002, Damian Conway wrote:
: Austin Hastings wrote:
: 
:  In the C that I learned, the ^| ops were bitwise.
:  
:  Likewise, the  || ops were lazy booleans.
:  
:  So what's a single-letter boolean act like? Is it lazy? Does it retain
:  its bitwise-ness but (since boolean) force evaluation for 1 or 0 first?
:  I just don't understand what the implied behavior is, since the
:  reference is outside my experience.
: 
: Since they're producing a boolean result, both C? and C?| could be
: implemented lazily. However, I suspect they mightn't be, just to keep
: them consistent (in their evaluation of operands) with the other bitwise
: ops.

What you're saying is correct, except that I don't think we should
be confusing lazy with short-circuit.  A lazy operator wouldn't
evaluate *either* side until it jolly well had to.  If you say

() = 1..Inf;

it shouldn't even try to produce a 1.

I don't much care whether they short-circuit or not.  I could argue it
either way.  I think it'd be okay if they short-circuit.  Anybody who
uses an operator like ? expecting it to force a side effect on the
second expression is nuts.  And there's something (though not much)
to be said for having an exact equivalent for C's  operator.

Larry




Re: [RFC] Perl6 Operator List, Take 5

2002-10-31 Thread Larry Wall
On Thu, 31 Oct 2002, Dave Storrs wrote:
: On Wed, 30 Oct 2002, Larry Wall wrote:
: 
:  If no one saw them then it could well be a problem on my end.
:  I'm trying to use a mailer (pine) that doesn't know about UTF-8 in
: 
:  a «+» b
: 
:   I'm using Pine 4.33 on FreeBSD 4.3, and I see these fine.

I sent those as Latin-1, not UTF-8.

Larry




Re: [RFC] Perl6 Operator List, Take 5

2002-10-31 Thread Iain 'Spoon' Truskett
* Larry Wall ([EMAIL PROTECTED]) [31 Oct 2002 08:22]:

[...]
 This is currently running in a window that does Latin-1 rather than
 UTF-8.  Do these French quotes come through?

 @a «+» @b

The window may say Latin-1, but the mail header said UTF-8.

As it happens, I couldn't see them until I piped the message through
less. That said, I've probably got a misconfiguration somewhere.
I usually have trouble with top-bit set chars, and ms codepagisms.


cheers,
-- 
Iain.



Re: [RFC] Perl6 Operator List, Take 5

2002-10-31 Thread Larry Wall
On Fri, 1 Nov 2002, Iain 'Spoon' Truskett wrote:
:  This is currently running in a window that does Latin-1 rather than
:  UTF-8.  Do these French quotes come through?
: 
:  a «+» b
: 
: The window may say Latin-1, but the mail header said UTF-8.
: 
: As it happens, I couldn't see them until I piped the message through
: less. That said, I've probably got a misconfiguration somewhere.
: I usually have trouble with top-bit set chars, and ms codepagisms.

I was misconfigured here.  My pine was marking it as UTF-8 even though
the window was Latin-1.  So you ought to be able to see this: a «*» b.

I'm definitely going to look into mutt though...gotta have Unicode email.

Larry




Re: [RFC] Perl6 Operator List, Take 5

2002-10-31 Thread Iain 'Spoon' Truskett
* Larry Wall ([EMAIL PROTECTED]) [01 Nov 2002 15:59]:

[...]
 I was misconfigured here. My pine was marking it as UTF-8 even though
 the window was Latin-1. So you ought to be able to see this: @a «*» @b.

That appeared perfectly.

 I'm definitely going to look into mutt though...gotta have Unicode email.

So I'm told =) Me? I'd be happy if more mailers supported the
Mail-Followup-To header.

I'm not too concerned about unicode since my xterm doesn't support it
anyway =) Obviously, I'll look into it one of these days. Soon after
Perl 6 is released, I imagine.


cheers,
-- 
Iain.



Re: [RFC] Perl6 HyperOperator List

2002-10-31 Thread Luke Palmer

Larry wrote:
 I don't much care whether they short-circuit or not.  I could argue it
 either way.  I think it'd be okay if they short-circuit.  Anybody who
 uses an operator like ? expecting it to force a side effect on the
 second expression is nuts.  And there's something (though not much)
 to be said for having an exact equivalent for C's  operator.

Well, would you mind saying it then?  Because there's certainly
something to be said against having an exact equivalent for C's 
operator.

Luke