Perl 6 Data Structures
Herbert Breunung
CPAN: lichtkind
Kephra 0.4.3.32
Kephra Logo
Als Hieroglyphe
Mansfelder Land
Mansfelder Land
Egypt aka Khem
Ein (K|C)amel
Noch ein Kamel?
Camelia
Camel ia
 
Schlaraffenland
Heiliger Gral
Schönheit Und Struktur
Datenstrukturen
 
@rrays Und %ashes
Auch $calare
Perl 5 @cities   = ( 'roma' ,   'milano' ,   'torino' );
Perl 5 & 6 @cities   = ( 'roma' ,   'milano' ,   'torino' );
Perl 5 @cities   = qw( roma   milano   torino );
Perl 6 @cities   = qw( roma   milano   torino ); @cities   = < roma   milano   torino >;
Mit Interpolation Wie “ “ @cities   = qw( roma   milano   torino ); @cities   = < roma   milano   torino >; @cities   = << roma   milano   $city >>;
Perl 5 & 6 @cities   = ( 'roma' ,   'milano' ,   'torino' );
P5 & P6 @cities   = ( 'roma' ,   'milano' ,   'torino' ); @cities   =  'roma' ,   'milano' ,   'torino' ;
Klammern Gruppieren ! @cities   = ( 'roma' ,   'milano' ,   'torino' ); @cities   =  'roma' ,   'milano' ,   'torino' ;
Itemkontext $cities   = ( 'roma' ,   'milano' ,   'torino' ); $cities   =  'roma' ,   'milano' ,   'torino' ;
Itemkontext # Parcel() $cities   = ( 'roma' ,   'milano' ,   'torino' ); # Str() $cities   =  'roma' ,   'milano' ,   'torino' ;
Was Ist Str ? # Parcel() $cities   = ( 'roma' ,   'milano' ,   'torino' ); # Str() - 'roma' ist ein String $cities   =  'roma' ,   'milano' ,   'torino' ;
Nur Der Erste Wert # Parcel() $cities   = ( 'roma' ,   'milano' ,   'turino' ); # $a, $b, $c = 1, 2, 3; $cities   =  'roma' ,   'milano' ,   'torino' ;
Was Ist Ein Parcel ? # Parcel – Sequenz von Items $cities   = ( 'roma' ,   'milano' ,   'torino' ); # Str() $cities   =  'roma' ,   'milano' ,   'torino' ;
() Erinnert An Was? # Parcel – wie in function(1,2,3); $cities   = ( 'roma' ,   'milano' ,   'torino' ); # Str() $cities   =  'roma' ,   'milano' ,   'torino' ;
Parcel # hat pos. und benannte Args $cities   = ( 'roma' ,   'milano' ,   'torino' ); # Str() $cities   =  'roma' ,   'milano' ,   'torino' ;
Kontainertypen # Array() $cities   = [ 'roma' ,   'milano' ,   'torino' ]; # Parcel() $cities   = ( 'roma' ,   'milano' ,   'torino' );
Array() ne List() ne Parcel() # List() $cities  =  @( 'roma' ,   'milano' ,   'torino' ); # Parcel() $cities   = ( 'roma' ,   'milano' ,   'torino' );
Nur Eine Liste # List() $cities  = list ( 'roma' ,   'milano' ,   'torino' ); # Parcel() $cities   = ( 'roma' ,   'milano' ,   'torino' );
Pos. Param. Als Liste # List() $cities  = list ( 'roma' ,   'milano' ,   'torino' ); # List() $cities   = ||( 'roma' ,  'milano' , 'torino' );
Array Objekt $cities   = [ 'roma' ,   'milano' ,   'torino' ]; @cities   =  'roma' ,   'milano' ,   'torino' ; say   $cities . WHAT  # Array() say   @cities . WHAT  # Array()
Nummer An Elementen say   length   @cities ;  # 3 say elems  @cities ;  #  3 # kein length
„ elems“ Ist Methode say   length   @cities ;  # 3 say  @cities . elems ;  # 3
An Jedem Arrayobjekt say   scalar  @$cities ;  # 3 say  $cities . elems ;  #  3
Inhalt Vom Skalar say   “@$cities“ ;  # roma ... say  $cities ;  #  roma ...
Auch Im Skalarkontext say   “@cities“ ;  # roma ... say  $( @cities ) ;  #  roma ...
Ich Meinte Itemkontext say   “@cities“ ;  # roma ... say  item( @cities ) ;  #  roma ...
Numerischer Kontext say   scalar   @cities ;  # 3 say  +   @cities ;  #  3
Numerischer Kontext say   scalar   @$cities ;  # 3 say  +   $cities ;  #  3
Boolkontext say   values   @cities ;  # romami... say  ?   @cities ;  #  Bool::True
Stringkontext say   “@cities“ ;  # roma milano say  ~   @cities ;  #  roma milano ...
. Wurde ~ say   “@cities“ ;  # roma milano say  “...“   ~   @cities ;  # ...roma mila..
Gehts Auch in P6 ? say   “ @cities“ ; # roma milano torino say  “@cities“ ; #  roma milano torino?
Nicht Ganz say   “@cities“ ;  # roma milano ... say  “@cities“ ;  #  @cities
Füge „[]“ An say   “@cities“ ;  # roma milano say  “@cities[]“ ; #  roma milano ...
Das War Kein Spezialfall say   “@cities“ ;  # roma milano say  @cities [] ;   #  roma milano ...
Perl 5 & 6 say  @cities ;  # romamilanotorino say  @cities ;  # roma milano torino
Tiefer Als Listen
STD Perl 5 use   Data::Dumper ; say   Dumper ( @cities );
$VAR1 = 2;  $VAR2 = 3; $VAR3 = 4; $VAR4 = 5; $VAR5 = 6; $VAR6 = 7; $VAR7 = 7; $VAR8 = 2; $VAR9 = 5; $VAR10 = [ 'a', 'b', 'c' ];  [2, 3, 4, 5, 6, 7, 7, 2, 5, [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;]] Data::Dumper  Ausgabe
Er Hats Repariert use   YAML ;  #  Data::Dumper  sucks say   Dump  @cities ;
--- - 2 - 3 - 4 - 5 - 6 - 7 - 7 - 2 - 5 - - a - b - c [2, 3, 4, 5, 6, 7, 7, 2, 5, [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;]] YAML Ausgabe
--- - 2 - 3 - 4 - 5 - 6 - 7 - 7 - 2 - 5 - - a - b - c [2, 3, 4, 5, 6, 7, 7, 2, 5, [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;]] Er Kanns Kürzer
Perl 6 say  @cities . perl ;
Mit eval Rückwandelbar # in jeder Tiefe: say  @cities . perl ; $ [&quot;roma&quot;, &quot;milano&quot;, &quot;torino&quot;]
Perl 5 say  $cities [ 2 ];  # torino
Perl 6 say  $cities [ 2 ];  # torino say  @cities [ 2 ];  # torino
Array Als Item say  $cities [ 2 ];  # in Perl 6 auch say  @cities [ 2 ];  # torino
Der Selbe Kontainertyp $cities   = [ 'roma' ,   'milano' ,   'torino' ]; say  $cities [ 2 ];  # $cities.WHAT say  @cities [ 2 ];  # @cities.WHAT
Arrayobjekt say  $cities [ 2 ];  # Array() say  @cities [ 2 ];  # Array()
Say Ist Eine Methode say  $cities [ 2 ];  # torino @cities [ 2 ]. say ;  # dito
[ ] Auch (Wie Jeder Op) say  $cities .[ 2 ];  #  2 ist parameter @cities .[ 2 ]. say ;  # dito
2 ist Letzter Index say  $cities [ 2 ];  # torino say  @cities [ 2 ];  # dito
Perl 5 say  $cities [ -1 ];  # torino say  @cities [ 2 ];  # dito
Perl 6 say  $cities [ -1 ];  # torino say  @cities [* -1 ];   # dito
Whatever * say  @cities [*- 1 ];   # torino
Whatever * say  @cities [*- 1 ];   # torino # parameter „*-1“ ist eine closure
Whatever * say  @cities [*- 1 ];   # torino # parameter „*-1“ ist eine closure # * ist parameter an diese closure
Whatever * say  @cities [*- 1 ];   # turino # parameter „*-1“ ist eine closure # * ist parameter an diese closure # * enthält gesammten Array
Whatever * say  @cities [*- 1 ];   # torino say  @cities [* /  2 ]; # milano
Whatever * say   “@cities“ ;   #  roma milano torino say  @cities [*];  #   roma milano torino
Whatever * say   “@cities“ ;   #  roma milano torino say  @cities [];  #   roma milano torino # default param ist *
LoL say  @cities [ 1 ][ 1 ];
List Of List @cities  = [< roma .. >], [< berlin .. >]; say  @cities [ 1 ][ 1 ]; say  $cities [ 1 ; 1 ];
Ein Spiel
Zähl die Schlümpfe
Zähle Wie viele Elemente hat diese Liste?
Count
Runde 1
Wie Viele Elemente ? my  @number  =  1 ,  2 ,  3 ,  4 ;
Wie Viele Elemente ? my  @number  =  1 ,  2 ,  3 ,  4 ;  # 4 my  @number  = ( 1 ,  2 ,  3 ,  4 );
Wie Viele Elemente ? my  @number  =  1 ,  2 ,  3 ,  4 ;  # 4 my  @number  = ( 1 ,  2 ,  3 ,  4 );  # 4 my  @number  =  1 , ( 2 ,  3 ),  4 ;
Wie Viele Elemente ? my  @number  =  1 ,  2 ,  3 ,  4 ;  # 4 my  @number  = ( 1 ,  2 ,  3 ,  4 );  # 4 my  @number  =  1 , ( 2 ,  3 ),  4 ;  # 4 my  @number  =  1 , [ 2 ,  3 ],  4 ;
Wie Viele Elemente ? my  @number  =  1 ,  2 ,  3 ,  4 ;  # 4 my  @number  = ( 1 ,  2 ,  3 ,  4 );  # 4 my  @number  =  1 , ( 2 ,  3 ),  4 ;  # 4 my  @number  =  1 , [ 2 ,  3 ],  4 ;  # 3 my  @number  = [ 1 ,  2 ,  3 ,  4 ];
Wie Viele Elemente ? my  @number  =  1 ,  2 ,  3 ,  4 ;  # 4 my  @number  = ( 1 ,  2 ,  3 ,  4 );  # 4 my  @number  =  1 , ( 2 ,  3 ),  4 ;  # 4 my  @number  =  1 , [ 2 ,  3 ],  4 ;  # 3 my  @number  = [ 1 ,  2 ,  3 ,  4 ];  # 1 mysub  1 ,( 2 ,[ 3 ,  4 ]),  5 ;  # in @_
Wie Viele Elemente ? my  @number  =  1 ,  2 ,  3 ,  4 ;  # 4 my  @number  = ( 1 ,  2 ,  3 ,  4 );  # 4 my  @number  =  1 , ( 2 ,  3 ),  4 ;  # 4 my  @number  =  1 , [ 2 ,  3 ],  4 ;  # 3 my  @number  = [ 1 ,  2 ,  3 ,  4 ];  # 1 mysub  1 ,( 2 ,[ 3 ,  4 ]),  5 ;  # 4 # + Params. von außerhalb der ( )
Runde 2
Wie Viele Elemente ? my  $number  =  1 ,  2 ,  3 ,  4 ;
Wie Viele Elemente ? my  $number  =  1 ,  2 ,  3 ,  4 ;  # 1 my  $number  = ( 1 ,  2 ,  3 ,  4 );
Wie Viele Elemente ? my  $number  =  1 ,  2 ,  3 ,  4 ;  # 1 my  $number  = ( 1 ,  2 ,  3 ,  4 );  # 4 my  $number  =  1 , ( 2 ,  3 ),  4 ;
Wie Viele Elemente ? my  $number  =  1 ,  2 ,  3 ,  4 ;  # 1 my  $number  = ( 1 ,  2 ,  3 ,  4 );  # 4 my  $number  =  1 , ( 2 ,  3 ),  4 ;  # 1 my  $number  = ( 1 ,  2 ),  3 ,  4 ;
Wie Viele Elemente ? my  $number  =  1 ,  2 ,  3 ,  4 ;  # 1 my  $number  = ( 1 ,  2 ,  3 ,  4 );  # 4 my  $number  =  1 , ( 2 ,  3 ),  4 ;  # 1 my  $number  = ( 1 ,  2 ),  3 ,  4 ;  # 2 my  $number  = ( 1 , [ 2 ,  3 ],  4 );
Wie Viele Elemente ? my  $number  =  1 ,  2 ,  3 ,  4 ;  # 1 my  $number  = ( 1 ,  2 ,  3 ,  4 );  # 4 my  $number  =  1 , ( 2 ,  3 ),  4 ;  # 1 my  $number  = ( 1 ,  2 ),  3 ,  4 ;  # 2 my  $number  = ( 1 , [ 2 ,  3 ],  4 );  # 3 my  $number  = [ 1 ,  2 ,  3 ,  4 ];
Wie Viele Elemente ? my  $number  =  1 ,  2 ,  3 ,  4 ;  # 1 my  $number  = ( 1 ,  2 ,  3 ,  4 );  # 4 my  $number  =  1 , ( 2 ,  3 ),  4 ;  # 1 my  $number  = ( 1 ,  2 ),  3 ,  4 ;  # 2 my  $number  = ( 1 , [ 2 ,  3 ],  4 );  # 3 my  $number  = [ 1 ,  2 ,  3 ,  4 ];  # 4
Runde 3
Wie Viele Elemente ? my  $pd   =   my  @pd  = ( 3 ,  1 ,  4 ,  1 );
Wie Viele Elemente ? my  $pd   =   my  @pd  = ( 3 ,  1 ,  4 ,  1 ); @number  =  1 ,   @pd ,  4 ;
Wie Viele Elemente ? my  $pd   =   my  @pd  = ( 3 ,  1 ,  4 ,  1 ); @number  =  1 ,  @pd ,  4 ;  # 6 @number  =  1 ,  $pd ,  4 ;
Wie Viele Elemente ? my  $pd   =   my  @pd  = ( 3 ,  1 ,  4 ,  1 ); @number  =  1 ,  @pd ,  4 ;  # 6 @number  =  1 ,  $pd ,  4 ;  # 3 @number  =  1 ,  @pd . item ,   4 ;
item & list == Konextops my  $pd   =   my  @pd  = ( 3 ,  1 ,  4 ,  1 ); @number  =  1 ,  @pd ,  4 ;  # 6 @number  =  1 ,  $pd ,  4 ;  # 3 @number  =  1 ,  @pd . item ,   4 ;  # 3 @number  =  1 ,  $pd . list ,  4 ;
Wie Viele Elemente ? my  $pd   =   my  @pd  = ( 3 ,  1 ,  4 ,  1 ); @number  =  1 ,  @pd ,  4 ;  # 6 @number  =  1 ,  $pd ,  4 ;  # 3 @number  =  1 ,  @pd . item ,   4 ;  # 3 @number  =  1 ,  $pd . list ,  4 ;  # 6 @number  =  Nil ,  Nil ,  Nil ;
Nil != undef my  $pd   =   my  @pd  = ( 3 ,  1 ,  4 ,  1 ); @number  =  1 ,  @pd ,  4 ;  # 6 @number  =  1 ,  $pd ,  4 ;  # 3 @number  =  1 ,  @pd . item ,   4 ;  # 3 @number  =  1 ,  $pd . list ,  4 ;  # 6 @number  =  Nil ,  Nil ,  Nil ;  # 0
And The Winner Is ...
Perl 5 @digits   = (  4  ) x  5 ;  # (4,4,4,4,4)
Perl 6 @digits   = (  4  ) x  5 ;  # (4,4,4,4,4) @digits   = (  4  ) xx  5 ;  # 4,4,4,4,4
Verfielfacht Listen @digits   = (  4  ) x  5 ;  # (4,4,4,4,4) @digits   =  4  xx  5 ;  # 4,4,4,4,4
Verfielfacht Strings @digits   =  4  x  5 ;  # '44444' @digits   =  4  x  5 ;  # '44444'
Verfielfacht Strings @digits   =  4  x  5 ;  # '44444' @digits   = ( 4 ) x  5 ;  # '44444'
Verfielfacht Strings @digits   =  '1 2'   x  3 ;  # '1 21 21 2' @digits   = ( 1 , 2 ) x  3 ;  # '1 21 21 2'
Verfielfacht Listen @digits   = ( 1 , 2 ) x  3 ;  #  1,2,1,2,1,2 @digits   = ( 1 , 2 ) xx  3 ;  #  1,2,1,2,1,2
Perl 5 @digits   = (  0  ..  9  );  # Bereichsop
Perl 5 & 6 @digits   = (  0  ..  9  );
Perl 6 @digits   =  0  ..  9 ;
Perl 6 @digits   = ^  10 ;  # 0 .. 9
0 Ist Gegeben @digits   =  0  ..^  10 ;  # 0 .. 9 (@)
^ Schließt Schranke Aus @digits   =  -1  ^..^  10 ;  # 0 .. 9
Sequence - Operator @digits   =  0  ...  9 ;
Linear @digits   =  0  ...  9 ;  # 0 .. 9
Arithmetisch @digits   =  0  ...  9 ;  # 0 .. 9 @odd   =  1 , 3  …  9 ;  # 1,3,5,7,9
Geometrisch @digits   =  0  ...  9 ;  # 0 .. 9 @odd   =  1 , 3  …  9 ;  # 1,3,5,7,9 @bin   =  1 , 2 , 4  …  1024 ; #..,8,16,32,.
Fibonacci @digits   =  0  ...  9 ;  # 0 .. 9 @odd   =  1 , 3  …  9 ;  # 1,3,5,7,9 @bin   =  1 , 2 , 4  …  1024 ; #..,8,16,32,. @fib   =  0 , 1 ,*+*   …  144 ;  #..,1,2,3,..
Prüf Das Limit @odd   =  1 , 3  …  10 ;  # 1,3,.. *
Unendliche Liste @odd   =  1 , 3  …  10 ;  # 1,3,.. * @number   =  0  .. *;  # 0 .. Inf
Bestimmte Elemente @odd   =  1 , 3  …  10 ;  # 1,3,.. * @number   =  0  .. *;  # 0 .. Inf say   @odd [ 1 ];  # 3 say   @number [ 5 ];  # 4
Alle Elemente @odd   =  1 , 3  …  10 ;  # 1,3,.. * @number   =  0  .. *;  # 0 .. Inf say   @odd [*];  # warten ... say   @number ;  # viele Ziffern
Anzahl Der Elemente @odd   =  1 , 3  …  10 ;  # 1,3,.. * @number   =  0  .. *;  # 0 .. Inf say   +  @odd ;  # warten ... say   @number ;  # viele Ziffern
Was ist geschehen? $number   =  0  .. *;  # 0 .. Inf say   $number . WHAT ;   # Range()
Ausgabe ? $number   =  0  .. *;  # 0 .. Inf say   $number ;  # ?
Erstes Element $number   =  0  .. *;  # 0 .. Inf say   $number ;  # 0
Unendliche Liste $number   =  0  .. *;  # 0 .. Inf say   @( $number );  # digits ...
Array @number   =  0  .. *;  # 0 .. Inf say   @number [ 5 ];
Bei Bedarf Erzeugt @number   =  0  .. *;  # 0 .. Inf say   @number [ 5 ];  #   @number.reify(5)
Interne Repräsentation @number   =  0  .. *;  # 0 .. Inf say   @number . reify ( 5 ). perl ; # (0, 1, 2, 3, 4, 5, 6..*)
Ihr Kennt Diese shift  unshift push  pop  splice  reverse map  grep
Perl 5 %opera   = ( 'verdi'  =>  'Aida' , 'puccini'  =>  'Turandot' , 'rossini' =>  'Il barbiere' , );
Perl 6 %opera   = ( 'verdi'  =>  'Aida' , 'puccini'  =>  'Turandot' , 'rossini' =>  'Il barbiere' , );
Kein Gruppieren Nötig %opera   = 'verdi'  =>  'Aida' , 'puccini'  =>  'Turandot' , 'rossini' =>  'Il barbiere' , ;
Immer Noch Ein Hash %opera   =  'verdi'  =>  'Aida' , 'puccini'  =>  'Turandot' , 'rossini' =>  'Il barbiere' , ; %opera . WHAT   eq   'Hash()'
Neuer Paar-Syntax %opera   = : verdi ( 'Aida' ), : puccini ( 'Turandot' ), : rossini ( 'Il barbiere' ), ; %opera . WHAT   eq   'Hash()'
Mit Autoquoting %opera   =  : verdi < Aida >, : puccini < Turandot >, : rossini < Il barbiere >, ; %opera . WHAT   eq   'Hash()'
Item - Kontext $opera   =  : verdi < Aida >, : puccini < Turandot >, : rossini < Il barbiere >, ; $opera . WHAT   eq   'Pair()'
Gruppiert $opera   =  ( : verdi < Aida >, : puccini < Turandot >, : rossini < Il barbiere >, ); %opera . WHAT   eq   'Parcel()'
Packet Kennt Pos. $opera   =  ( : verdi < Aida >, : puccini < Turandot >, : rossini < Il barbiere >, ); 0 verdi Aida 1 puccini Turandot 2 rossini Il barbiere
Hashkontext - Op $opera   =  %( : verdi < Aida >, : puccini < Turandot >, : rossini < Il barbiere >, ); %opera . WHAT   eq   'Hash()'
Hashkontext - Op $opera   =  hash( : verdi < Aida >, : puccini < Turandot >, : rossini < Il barbiere >, ); %opera . WHAT   eq   'Hash()'
Hash-Generator-Op $opera   =  { : verdi < Aida >, : puccini < Turandot >, : rossini < Il barbiere >, }; %opera . WHAT   eq   'Hash()'
Hash - Generator - Op %opera   =  { : verdi < Aida >, : puccini < Turandot >, : rossini < Il barbiere >, }; %opera . WHAT   eq   'Hash()'
Invariante Sigils %opera { 'rossini' };  # Il barbiere
Invariante Sigils %opera .{ 'rossini' };  # alias .at_key()
Erinnern An qw() ? %opera { 'rossini' };  # Il barbiere %opera < rossini >;
Mit Interpolation %opera { 'rossini' };  # Il barbiere %opera < rossini >;  %opera << $autore >>;
2 Opern Auf Einmal %opera { 'rossini' ,  'puccini' }; %opera < rossini puccini >;  %opera << @autore >>;
Sind Auch Hashes $opera { 'rossini' ,  'puccini' }; $opera < rossini puccini >;  $opera << @autore >>;
Auch Mit Parcel() #   oder Capture() $opera { 'rossini' ,  'puccini' }; $opera < rossini puccini >;  $opera << @autore >>;
Hash Methoden %opera . keys ;  # verdi puccini ro... %opera . values ;  # aida turandot ... %opera . kv ;  # verdi aida puccini ...
Haben Arrays Auch @cities . keys ;  # 0 1 2 @cities . values ;  # roma milano ... @cities . kv ;  # 0 roma 1 milano 2 ...
Auch Paare $opera . key ;  # rossini $opera . value ;  # Il barbiere $opera ;  #
Mehr Hash Methoden %opera . pairs ;  # list of pair obj. %opera . exists ;  # Bool %opera . delete ;  # 1 | 0
Mehr Hash Methoden %opera . pairs ;  # list of pair obj. %opera . exists ;  # one at a time %opera . delete ;  # one at a time
Hash Im Kontext ?  %opera ;  # bool Kontext +  %opera ;  # num Kontext ~  %opera ;  # string Kontext
Hash Im Kontext ?  %opera ;  # Bool::True +  %opera ;  # 3 ~  %opera ;  # rossini Il barbiere
Value Im Kontext ?  %opera ;  # Bool::True +  %opera ;  # 3 ~  %opera ;  # rossini Il barbiere
Neue Hashmethoden say  %opera . invert ; Aida  verdi Turandot  puccini Il barbiere  rossini
Hash Erzeuger my  %h  =  @cities . classify  ( {  uc substr (  $_ ,   0 ,   1  ) } ); say   %h ; $ R  roma M  milano T  torino
Hash Erzeuger @cities . categorize ({  catsub ( $_   ) }); say   %h . perl ;
Hash Erzeuger @cities . categorize ({  water ( $_   ) }); say   %h . perl ; {&quot;mare&quot; => [&quot;roma&quot;], &quot;fiume&quot; => [&quot;roma&quot;, &quot;milano&quot;, &quot;torino&quot;], &quot;lago&quot; => Nil}
==> Pipes
Schwartz. Transform @results   =  map  {…},  sort  {…},  map  {...},  @input ;
Schwartz. Transform @results   =  map  {…},  sort  {…},  map  {...},  @input ; @results   =  map  {…} <==  sort  {…} <==  map  {…} <==  @input ;
Schwartz. Transform @results   =  map  {…},  sort  {…},  map  {...},  @input ; @results   <==  map  {…} <==  sort  {…} <==  map  {…} <==  @input ;
Schwartz. Transform @results   =  map  {…},  sort  {…},  map  {...},  @input ; @input   ==>  map  {…} ==>  sort  {…} ==>  map  {…} ==>  @results ;
Metaops
Metaops = ! R
Metaops >> [ ] [\ ] X Z S
Metaops >> [ ] [\ ] X Z S
Hyperoperator >>
Hyperoperator >> .hyper()
Simple Example ( 1 .. 5 ) >>++
That Works @number >>++
Result @number >>++ 2 ,  3 ,  4 ,  5 ,  6
More Complicated ( 1 .. 5 ) >>+>>   1
Check Your Spaces (1..5) _ >>+>> _ 1
Same Result ( 1 .. 5 ) >>+>>   1 2 ,  3 ,  4 ,  5 ,  6
Reverse Hyper ( 1 .. 5 ) <<+<<   1
Right Side Rules ( 1 .. 5 ) <<+<<   1 2
Both Rule ? ( 1 .. 5 ) >>+<<   1
Yes Both! ( 1 .. 5 ) >>+<<   1 Runtime Error !!!
Preserves LoL ? ( 1 .. 5 , [ 6 .. 9 ]) >>+>>   1
Preserves LoL ! ( 1 .. 5 , [ 6 .. 9 ]) >>+>>   1 2 ,  3 ,  4 ,  5 ,  6 ,   [ 7 ,  8 ,  9 , 10 ]
On 2 Sides ? ( 1 .. 5 , [ 6 .. 9 ]) >>+<<   ( 0 .. 4 , [ 1 .. 4 ])
On 2 Sides ! ( 1 .. 5 , [ 6 .. 9 ]) >>+<<   ( 0 .. 4 , [ 1 .. 4 ]) ( 1 ,  3 ,  5 ,  7 ,  9 , [ 7 ,  9 ,  11 ,  13 ])
How About This? ( 1 .. 5 , [ 6 .. 9 ]) >>+<<   ( 0 .. 4 , [ 1 .. 5 ])
Checks Lengths ( 1 .. 5 , [ 6 .. 9 ]) >>+<<   ( 0 .. 4 , [ 1 .. 5 ]) Runtime Error
Reduce [ ] .reduce
Do The Gauss [+] ( 1 .. 100 )
Do The Gauss [+] ( 1 .. 100 ) 1  +  2  +  3  +  4  +  5  +  6  +  7  +  8  + ...
100+1 * 50 [+] ( 1 .. 100 ) 5050
Chained Comparsion [<] ( 1 .. 100 )
Chained Comparsion [<] ( 1 .. 100 ) 1  <  2  <  3  <  4  <  5  <  6  <  7  <  8  < ...
Chained Comparsion [<] ( 1 .. 100 ) Bool::True
Junction all ( 1 .. 100 ) >  0
Junction all ( 1 .. 100 ) 1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  | ...
Junction all ( 1 .. 100 ) >  0 ( True ,   True ,  True , True , ...
Bool Context ? all ( 1 .. 100 ) >  0 True
Bool Context ? all ( 1 .. 100 ) >  1 False
Metaops >> [ ] [\ ] X Z S
Triangle [\ ] triangle()
Back To Gauss [\+] ( 1 .. 100 )
Returns A List [\+] ( 1 .. 100 ) ((((( 1 )   +  2  )   +  3 )   +  4 )   +  5 )   +  6 ) + ...
Returns A List [\+] ( 1 .. 100 ) ( 1 ,  3 ,  6 ,  10 ,  15 ,  21 ,  28 , ...
Metaops >> [ ] [\ ] X Z S
Cross .crosswith X
Cross ( 1 ,  2 ) X ( 1 ,  2 ) 11 ,  12 ,  21 ,  22
Cross With Power ( 1 ,  2 ) X** ( 1 ,  2 )
Cross With Power ( 1 ,  2 ) X** ( 1 ,  2 ) 1 ,  1 ,  2 ,  4
Metaops >> [ ] [\ ] X Z S
Zip .zipwith() Z
Zip ( 1 .. 10 ) Z < a .. j > < 1a 2b 3c 4d 5e 6f   ...>
Zip for   @a  Z  @b ->   $a ,  $b  {
Zip ( 1 .. 4 ) Z+ ( 1 .. 4 )
Zip ( 1 .. 4 ) Z+ ( 1 .. 4 ) 2 ,  4 ,  6 ,  8
Metaops >> [ ] [\ ] X Z S
Sequence .sequence S
__END__ ?
=begin END
Danke

Perl 6 Datenstrukturen

  • 1.
    Perl 6 DataStructures
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
    Perl 5 @cities = ( 'roma' , 'milano' , 'torino' );
  • 23.
    Perl 5 &6 @cities = ( 'roma' , 'milano' , 'torino' );
  • 24.
    Perl 5 @cities = qw( roma milano torino );
  • 25.
    Perl 6 @cities = qw( roma milano torino ); @cities = < roma milano torino >;
  • 26.
    Mit Interpolation Wie“ “ @cities = qw( roma milano torino ); @cities = < roma milano torino >; @cities = << roma milano $city >>;
  • 27.
    Perl 5 &6 @cities = ( 'roma' , 'milano' , 'torino' );
  • 28.
    P5 & P6@cities = ( 'roma' , 'milano' , 'torino' ); @cities = 'roma' , 'milano' , 'torino' ;
  • 29.
    Klammern Gruppieren !@cities = ( 'roma' , 'milano' , 'torino' ); @cities = 'roma' , 'milano' , 'torino' ;
  • 30.
    Itemkontext $cities = ( 'roma' , 'milano' , 'torino' ); $cities = 'roma' , 'milano' , 'torino' ;
  • 31.
    Itemkontext # Parcel()$cities = ( 'roma' , 'milano' , 'torino' ); # Str() $cities = 'roma' , 'milano' , 'torino' ;
  • 32.
    Was Ist Str? # Parcel() $cities = ( 'roma' , 'milano' , 'torino' ); # Str() - 'roma' ist ein String $cities = 'roma' , 'milano' , 'torino' ;
  • 33.
    Nur Der ErsteWert # Parcel() $cities = ( 'roma' , 'milano' , 'turino' ); # $a, $b, $c = 1, 2, 3; $cities = 'roma' , 'milano' , 'torino' ;
  • 34.
    Was Ist EinParcel ? # Parcel – Sequenz von Items $cities = ( 'roma' , 'milano' , 'torino' ); # Str() $cities = 'roma' , 'milano' , 'torino' ;
  • 35.
    () Erinnert AnWas? # Parcel – wie in function(1,2,3); $cities = ( 'roma' , 'milano' , 'torino' ); # Str() $cities = 'roma' , 'milano' , 'torino' ;
  • 36.
    Parcel # hatpos. und benannte Args $cities = ( 'roma' , 'milano' , 'torino' ); # Str() $cities = 'roma' , 'milano' , 'torino' ;
  • 37.
    Kontainertypen # Array()$cities = [ 'roma' , 'milano' , 'torino' ]; # Parcel() $cities = ( 'roma' , 'milano' , 'torino' );
  • 38.
    Array() ne List()ne Parcel() # List() $cities = @( 'roma' , 'milano' , 'torino' ); # Parcel() $cities = ( 'roma' , 'milano' , 'torino' );
  • 39.
    Nur Eine Liste# List() $cities = list ( 'roma' , 'milano' , 'torino' ); # Parcel() $cities = ( 'roma' , 'milano' , 'torino' );
  • 40.
    Pos. Param. AlsListe # List() $cities = list ( 'roma' , 'milano' , 'torino' ); # List() $cities = ||( 'roma' , 'milano' , 'torino' );
  • 41.
    Array Objekt $cities = [ 'roma' , 'milano' , 'torino' ]; @cities = 'roma' , 'milano' , 'torino' ; say $cities . WHAT # Array() say @cities . WHAT # Array()
  • 42.
    Nummer An Elementensay length @cities ; # 3 say elems @cities ; # 3 # kein length
  • 43.
    „ elems“ IstMethode say length @cities ; # 3 say @cities . elems ; # 3
  • 44.
    An Jedem Arrayobjektsay scalar @$cities ; # 3 say $cities . elems ; # 3
  • 45.
    Inhalt Vom Skalarsay “@$cities“ ; # roma ... say $cities ; # roma ...
  • 46.
    Auch Im Skalarkontextsay “@cities“ ; # roma ... say $( @cities ) ; # roma ...
  • 47.
    Ich Meinte Itemkontextsay “@cities“ ; # roma ... say item( @cities ) ; # roma ...
  • 48.
    Numerischer Kontext say scalar @cities ; # 3 say + @cities ; # 3
  • 49.
    Numerischer Kontext say scalar @$cities ; # 3 say + $cities ; # 3
  • 50.
    Boolkontext say values @cities ; # romami... say ? @cities ; # Bool::True
  • 51.
    Stringkontext say “@cities“ ; # roma milano say ~ @cities ; # roma milano ...
  • 52.
    . Wurde ~say “@cities“ ; # roma milano say “...“ ~ @cities ; # ...roma mila..
  • 53.
    Gehts Auch inP6 ? say “ @cities“ ; # roma milano torino say “@cities“ ; # roma milano torino?
  • 54.
    Nicht Ganz say “@cities“ ; # roma milano ... say “@cities“ ; # @cities
  • 55.
    Füge „[]“ Ansay “@cities“ ; # roma milano say “@cities[]“ ; # roma milano ...
  • 56.
    Das War KeinSpezialfall say “@cities“ ; # roma milano say @cities [] ; # roma milano ...
  • 57.
    Perl 5 &6 say @cities ; # romamilanotorino say @cities ; # roma milano torino
  • 58.
  • 59.
    STD Perl 5use Data::Dumper ; say Dumper ( @cities );
  • 60.
    $VAR1 = 2; $VAR2 = 3; $VAR3 = 4; $VAR4 = 5; $VAR5 = 6; $VAR6 = 7; $VAR7 = 7; $VAR8 = 2; $VAR9 = 5; $VAR10 = [ 'a', 'b', 'c' ]; [2, 3, 4, 5, 6, 7, 7, 2, 5, [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;]] Data::Dumper Ausgabe
  • 61.
    Er Hats Repariertuse YAML ; # Data::Dumper sucks say Dump @cities ;
  • 62.
    --- - 2- 3 - 4 - 5 - 6 - 7 - 7 - 2 - 5 - - a - b - c [2, 3, 4, 5, 6, 7, 7, 2, 5, [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;]] YAML Ausgabe
  • 63.
    --- - 2- 3 - 4 - 5 - 6 - 7 - 7 - 2 - 5 - - a - b - c [2, 3, 4, 5, 6, 7, 7, 2, 5, [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;]] Er Kanns Kürzer
  • 64.
    Perl 6 say @cities . perl ;
  • 65.
    Mit eval Rückwandelbar# in jeder Tiefe: say @cities . perl ; $ [&quot;roma&quot;, &quot;milano&quot;, &quot;torino&quot;]
  • 66.
    Perl 5 say $cities [ 2 ]; # torino
  • 67.
    Perl 6 say $cities [ 2 ]; # torino say @cities [ 2 ]; # torino
  • 68.
    Array Als Itemsay $cities [ 2 ]; # in Perl 6 auch say @cities [ 2 ]; # torino
  • 69.
    Der Selbe Kontainertyp$cities = [ 'roma' , 'milano' , 'torino' ]; say $cities [ 2 ]; # $cities.WHAT say @cities [ 2 ]; # @cities.WHAT
  • 70.
    Arrayobjekt say $cities [ 2 ]; # Array() say @cities [ 2 ]; # Array()
  • 71.
    Say Ist EineMethode say $cities [ 2 ]; # torino @cities [ 2 ]. say ; # dito
  • 72.
    [ ] Auch(Wie Jeder Op) say $cities .[ 2 ]; # 2 ist parameter @cities .[ 2 ]. say ; # dito
  • 73.
    2 ist LetzterIndex say $cities [ 2 ]; # torino say @cities [ 2 ]; # dito
  • 74.
    Perl 5 say $cities [ -1 ]; # torino say @cities [ 2 ]; # dito
  • 75.
    Perl 6 say $cities [ -1 ]; # torino say @cities [* -1 ]; # dito
  • 76.
    Whatever * say @cities [*- 1 ]; # torino
  • 77.
    Whatever * say @cities [*- 1 ]; # torino # parameter „*-1“ ist eine closure
  • 78.
    Whatever * say @cities [*- 1 ]; # torino # parameter „*-1“ ist eine closure # * ist parameter an diese closure
  • 79.
    Whatever * say @cities [*- 1 ]; # turino # parameter „*-1“ ist eine closure # * ist parameter an diese closure # * enthält gesammten Array
  • 80.
    Whatever * say @cities [*- 1 ]; # torino say @cities [* / 2 ]; # milano
  • 81.
    Whatever * say “@cities“ ; # roma milano torino say @cities [*]; # roma milano torino
  • 82.
    Whatever * say “@cities“ ; # roma milano torino say @cities []; # roma milano torino # default param ist *
  • 83.
    LoL say @cities [ 1 ][ 1 ];
  • 84.
    List Of List@cities = [< roma .. >], [< berlin .. >]; say @cities [ 1 ][ 1 ]; say $cities [ 1 ; 1 ];
  • 85.
  • 86.
  • 87.
    Zähle Wie vieleElemente hat diese Liste?
  • 88.
  • 89.
  • 90.
    Wie Viele Elemente? my @number = 1 , 2 , 3 , 4 ;
  • 91.
    Wie Viele Elemente? my @number = 1 , 2 , 3 , 4 ; # 4 my @number = ( 1 , 2 , 3 , 4 );
  • 92.
    Wie Viele Elemente? my @number = 1 , 2 , 3 , 4 ; # 4 my @number = ( 1 , 2 , 3 , 4 ); # 4 my @number = 1 , ( 2 , 3 ), 4 ;
  • 93.
    Wie Viele Elemente? my @number = 1 , 2 , 3 , 4 ; # 4 my @number = ( 1 , 2 , 3 , 4 ); # 4 my @number = 1 , ( 2 , 3 ), 4 ; # 4 my @number = 1 , [ 2 , 3 ], 4 ;
  • 94.
    Wie Viele Elemente? my @number = 1 , 2 , 3 , 4 ; # 4 my @number = ( 1 , 2 , 3 , 4 ); # 4 my @number = 1 , ( 2 , 3 ), 4 ; # 4 my @number = 1 , [ 2 , 3 ], 4 ; # 3 my @number = [ 1 , 2 , 3 , 4 ];
  • 95.
    Wie Viele Elemente? my @number = 1 , 2 , 3 , 4 ; # 4 my @number = ( 1 , 2 , 3 , 4 ); # 4 my @number = 1 , ( 2 , 3 ), 4 ; # 4 my @number = 1 , [ 2 , 3 ], 4 ; # 3 my @number = [ 1 , 2 , 3 , 4 ]; # 1 mysub 1 ,( 2 ,[ 3 , 4 ]), 5 ; # in @_
  • 96.
    Wie Viele Elemente? my @number = 1 , 2 , 3 , 4 ; # 4 my @number = ( 1 , 2 , 3 , 4 ); # 4 my @number = 1 , ( 2 , 3 ), 4 ; # 4 my @number = 1 , [ 2 , 3 ], 4 ; # 3 my @number = [ 1 , 2 , 3 , 4 ]; # 1 mysub 1 ,( 2 ,[ 3 , 4 ]), 5 ; # 4 # + Params. von außerhalb der ( )
  • 97.
  • 98.
    Wie Viele Elemente? my $number = 1 , 2 , 3 , 4 ;
  • 99.
    Wie Viele Elemente? my $number = 1 , 2 , 3 , 4 ; # 1 my $number = ( 1 , 2 , 3 , 4 );
  • 100.
    Wie Viele Elemente? my $number = 1 , 2 , 3 , 4 ; # 1 my $number = ( 1 , 2 , 3 , 4 ); # 4 my $number = 1 , ( 2 , 3 ), 4 ;
  • 101.
    Wie Viele Elemente? my $number = 1 , 2 , 3 , 4 ; # 1 my $number = ( 1 , 2 , 3 , 4 ); # 4 my $number = 1 , ( 2 , 3 ), 4 ; # 1 my $number = ( 1 , 2 ), 3 , 4 ;
  • 102.
    Wie Viele Elemente? my $number = 1 , 2 , 3 , 4 ; # 1 my $number = ( 1 , 2 , 3 , 4 ); # 4 my $number = 1 , ( 2 , 3 ), 4 ; # 1 my $number = ( 1 , 2 ), 3 , 4 ; # 2 my $number = ( 1 , [ 2 , 3 ], 4 );
  • 103.
    Wie Viele Elemente? my $number = 1 , 2 , 3 , 4 ; # 1 my $number = ( 1 , 2 , 3 , 4 ); # 4 my $number = 1 , ( 2 , 3 ), 4 ; # 1 my $number = ( 1 , 2 ), 3 , 4 ; # 2 my $number = ( 1 , [ 2 , 3 ], 4 ); # 3 my $number = [ 1 , 2 , 3 , 4 ];
  • 104.
    Wie Viele Elemente? my $number = 1 , 2 , 3 , 4 ; # 1 my $number = ( 1 , 2 , 3 , 4 ); # 4 my $number = 1 , ( 2 , 3 ), 4 ; # 1 my $number = ( 1 , 2 ), 3 , 4 ; # 2 my $number = ( 1 , [ 2 , 3 ], 4 ); # 3 my $number = [ 1 , 2 , 3 , 4 ]; # 4
  • 105.
  • 106.
    Wie Viele Elemente? my $pd = my @pd = ( 3 , 1 , 4 , 1 );
  • 107.
    Wie Viele Elemente? my $pd = my @pd = ( 3 , 1 , 4 , 1 ); @number = 1 , @pd , 4 ;
  • 108.
    Wie Viele Elemente? my $pd = my @pd = ( 3 , 1 , 4 , 1 ); @number = 1 , @pd , 4 ; # 6 @number = 1 , $pd , 4 ;
  • 109.
    Wie Viele Elemente? my $pd = my @pd = ( 3 , 1 , 4 , 1 ); @number = 1 , @pd , 4 ; # 6 @number = 1 , $pd , 4 ; # 3 @number = 1 , @pd . item , 4 ;
  • 110.
    item & list== Konextops my $pd = my @pd = ( 3 , 1 , 4 , 1 ); @number = 1 , @pd , 4 ; # 6 @number = 1 , $pd , 4 ; # 3 @number = 1 , @pd . item , 4 ; # 3 @number = 1 , $pd . list , 4 ;
  • 111.
    Wie Viele Elemente? my $pd = my @pd = ( 3 , 1 , 4 , 1 ); @number = 1 , @pd , 4 ; # 6 @number = 1 , $pd , 4 ; # 3 @number = 1 , @pd . item , 4 ; # 3 @number = 1 , $pd . list , 4 ; # 6 @number = Nil , Nil , Nil ;
  • 112.
    Nil != undefmy $pd = my @pd = ( 3 , 1 , 4 , 1 ); @number = 1 , @pd , 4 ; # 6 @number = 1 , $pd , 4 ; # 3 @number = 1 , @pd . item , 4 ; # 3 @number = 1 , $pd . list , 4 ; # 6 @number = Nil , Nil , Nil ; # 0
  • 113.
  • 114.
    Perl 5 @digits = ( 4 ) x 5 ; # (4,4,4,4,4)
  • 115.
    Perl 6 @digits = ( 4 ) x 5 ; # (4,4,4,4,4) @digits = ( 4 ) xx 5 ; # 4,4,4,4,4
  • 116.
    Verfielfacht Listen @digits = ( 4 ) x 5 ; # (4,4,4,4,4) @digits = 4 xx 5 ; # 4,4,4,4,4
  • 117.
    Verfielfacht Strings @digits = 4 x 5 ; # '44444' @digits = 4 x 5 ; # '44444'
  • 118.
    Verfielfacht Strings @digits = 4 x 5 ; # '44444' @digits = ( 4 ) x 5 ; # '44444'
  • 119.
    Verfielfacht Strings @digits = '1 2' x 3 ; # '1 21 21 2' @digits = ( 1 , 2 ) x 3 ; # '1 21 21 2'
  • 120.
    Verfielfacht Listen @digits = ( 1 , 2 ) x 3 ; # 1,2,1,2,1,2 @digits = ( 1 , 2 ) xx 3 ; # 1,2,1,2,1,2
  • 121.
    Perl 5 @digits = ( 0 .. 9 ); # Bereichsop
  • 122.
    Perl 5 &6 @digits = ( 0 .. 9 );
  • 123.
    Perl 6 @digits = 0 .. 9 ;
  • 124.
    Perl 6 @digits = ^ 10 ; # 0 .. 9
  • 125.
    0 Ist Gegeben@digits = 0 ..^ 10 ; # 0 .. 9 (@)
  • 126.
    ^ Schließt SchrankeAus @digits = -1 ^..^ 10 ; # 0 .. 9
  • 127.
    Sequence - Operator@digits = 0 ... 9 ;
  • 128.
    Linear @digits = 0 ... 9 ; # 0 .. 9
  • 129.
    Arithmetisch @digits = 0 ... 9 ; # 0 .. 9 @odd = 1 , 3 … 9 ; # 1,3,5,7,9
  • 130.
    Geometrisch @digits = 0 ... 9 ; # 0 .. 9 @odd = 1 , 3 … 9 ; # 1,3,5,7,9 @bin = 1 , 2 , 4 … 1024 ; #..,8,16,32,.
  • 131.
    Fibonacci @digits = 0 ... 9 ; # 0 .. 9 @odd = 1 , 3 … 9 ; # 1,3,5,7,9 @bin = 1 , 2 , 4 … 1024 ; #..,8,16,32,. @fib = 0 , 1 ,*+* … 144 ; #..,1,2,3,..
  • 132.
    Prüf Das Limit@odd = 1 , 3 … 10 ; # 1,3,.. *
  • 133.
    Unendliche Liste @odd = 1 , 3 … 10 ; # 1,3,.. * @number = 0 .. *; # 0 .. Inf
  • 134.
    Bestimmte Elemente @odd = 1 , 3 … 10 ; # 1,3,.. * @number = 0 .. *; # 0 .. Inf say @odd [ 1 ]; # 3 say @number [ 5 ]; # 4
  • 135.
    Alle Elemente @odd = 1 , 3 … 10 ; # 1,3,.. * @number = 0 .. *; # 0 .. Inf say @odd [*]; # warten ... say @number ; # viele Ziffern
  • 136.
    Anzahl Der Elemente@odd = 1 , 3 … 10 ; # 1,3,.. * @number = 0 .. *; # 0 .. Inf say + @odd ; # warten ... say @number ; # viele Ziffern
  • 137.
    Was ist geschehen?$number = 0 .. *; # 0 .. Inf say $number . WHAT ; # Range()
  • 138.
    Ausgabe ? $number = 0 .. *; # 0 .. Inf say $number ; # ?
  • 139.
    Erstes Element $number = 0 .. *; # 0 .. Inf say $number ; # 0
  • 140.
    Unendliche Liste $number = 0 .. *; # 0 .. Inf say @( $number ); # digits ...
  • 141.
    Array @number = 0 .. *; # 0 .. Inf say @number [ 5 ];
  • 142.
    Bei Bedarf Erzeugt@number = 0 .. *; # 0 .. Inf say @number [ 5 ]; # @number.reify(5)
  • 143.
    Interne Repräsentation @number = 0 .. *; # 0 .. Inf say @number . reify ( 5 ). perl ; # (0, 1, 2, 3, 4, 5, 6..*)
  • 144.
    Ihr Kennt Dieseshift unshift push pop splice reverse map grep
  • 145.
    Perl 5 %opera = ( 'verdi' => 'Aida' , 'puccini' => 'Turandot' , 'rossini' => 'Il barbiere' , );
  • 146.
    Perl 6 %opera = ( 'verdi' => 'Aida' , 'puccini' => 'Turandot' , 'rossini' => 'Il barbiere' , );
  • 147.
    Kein Gruppieren Nötig%opera = 'verdi' => 'Aida' , 'puccini' => 'Turandot' , 'rossini' => 'Il barbiere' , ;
  • 148.
    Immer Noch EinHash %opera = 'verdi' => 'Aida' , 'puccini' => 'Turandot' , 'rossini' => 'Il barbiere' , ; %opera . WHAT eq 'Hash()'
  • 149.
    Neuer Paar-Syntax %opera = : verdi ( 'Aida' ), : puccini ( 'Turandot' ), : rossini ( 'Il barbiere' ), ; %opera . WHAT eq 'Hash()'
  • 150.
    Mit Autoquoting %opera = : verdi < Aida >, : puccini < Turandot >, : rossini < Il barbiere >, ; %opera . WHAT eq 'Hash()'
  • 151.
    Item - Kontext$opera = : verdi < Aida >, : puccini < Turandot >, : rossini < Il barbiere >, ; $opera . WHAT eq 'Pair()'
  • 152.
    Gruppiert $opera = ( : verdi < Aida >, : puccini < Turandot >, : rossini < Il barbiere >, ); %opera . WHAT eq 'Parcel()'
  • 153.
    Packet Kennt Pos.$opera = ( : verdi < Aida >, : puccini < Turandot >, : rossini < Il barbiere >, ); 0 verdi Aida 1 puccini Turandot 2 rossini Il barbiere
  • 154.
    Hashkontext - Op$opera = %( : verdi < Aida >, : puccini < Turandot >, : rossini < Il barbiere >, ); %opera . WHAT eq 'Hash()'
  • 155.
    Hashkontext - Op$opera = hash( : verdi < Aida >, : puccini < Turandot >, : rossini < Il barbiere >, ); %opera . WHAT eq 'Hash()'
  • 156.
    Hash-Generator-Op $opera = { : verdi < Aida >, : puccini < Turandot >, : rossini < Il barbiere >, }; %opera . WHAT eq 'Hash()'
  • 157.
    Hash - Generator- Op %opera = { : verdi < Aida >, : puccini < Turandot >, : rossini < Il barbiere >, }; %opera . WHAT eq 'Hash()'
  • 158.
    Invariante Sigils %opera{ 'rossini' }; # Il barbiere
  • 159.
    Invariante Sigils %opera.{ 'rossini' }; # alias .at_key()
  • 160.
    Erinnern An qw()? %opera { 'rossini' }; # Il barbiere %opera < rossini >;
  • 161.
    Mit Interpolation %opera{ 'rossini' }; # Il barbiere %opera < rossini >; %opera << $autore >>;
  • 162.
    2 Opern AufEinmal %opera { 'rossini' , 'puccini' }; %opera < rossini puccini >; %opera << @autore >>;
  • 163.
    Sind Auch Hashes$opera { 'rossini' , 'puccini' }; $opera < rossini puccini >; $opera << @autore >>;
  • 164.
    Auch Mit Parcel()# oder Capture() $opera { 'rossini' , 'puccini' }; $opera < rossini puccini >; $opera << @autore >>;
  • 165.
    Hash Methoden %opera. keys ; # verdi puccini ro... %opera . values ; # aida turandot ... %opera . kv ; # verdi aida puccini ...
  • 166.
    Haben Arrays Auch@cities . keys ; # 0 1 2 @cities . values ; # roma milano ... @cities . kv ; # 0 roma 1 milano 2 ...
  • 167.
    Auch Paare $opera. key ; # rossini $opera . value ; # Il barbiere $opera ; #
  • 168.
    Mehr Hash Methoden%opera . pairs ; # list of pair obj. %opera . exists ; # Bool %opera . delete ; # 1 | 0
  • 169.
    Mehr Hash Methoden%opera . pairs ; # list of pair obj. %opera . exists ; # one at a time %opera . delete ; # one at a time
  • 170.
    Hash Im Kontext? %opera ; # bool Kontext + %opera ; # num Kontext ~ %opera ; # string Kontext
  • 171.
    Hash Im Kontext? %opera ; # Bool::True + %opera ; # 3 ~ %opera ; # rossini Il barbiere
  • 172.
    Value Im Kontext? %opera ; # Bool::True + %opera ; # 3 ~ %opera ; # rossini Il barbiere
  • 173.
    Neue Hashmethoden say %opera . invert ; Aida verdi Turandot puccini Il barbiere rossini
  • 174.
    Hash Erzeuger my %h = @cities . classify ( { uc substr ( $_ , 0 , 1 ) } ); say %h ; $ R roma M milano T torino
  • 175.
    Hash Erzeuger @cities. categorize ({ catsub ( $_ ) }); say %h . perl ;
  • 176.
    Hash Erzeuger @cities. categorize ({ water ( $_ ) }); say %h . perl ; {&quot;mare&quot; => [&quot;roma&quot;], &quot;fiume&quot; => [&quot;roma&quot;, &quot;milano&quot;, &quot;torino&quot;], &quot;lago&quot; => Nil}
  • 177.
  • 178.
    Schwartz. Transform @results = map {…}, sort {…}, map {...}, @input ;
  • 179.
    Schwartz. Transform @results = map {…}, sort {…}, map {...}, @input ; @results = map {…} <== sort {…} <== map {…} <== @input ;
  • 180.
    Schwartz. Transform @results = map {…}, sort {…}, map {...}, @input ; @results <== map {…} <== sort {…} <== map {…} <== @input ;
  • 181.
    Schwartz. Transform @results = map {…}, sort {…}, map {...}, @input ; @input ==> map {…} ==> sort {…} ==> map {…} ==> @results ;
  • 182.
  • 183.
  • 184.
    Metaops >> [] [\ ] X Z S
  • 185.
    Metaops >> [] [\ ] X Z S
  • 186.
  • 187.
  • 188.
    Simple Example (1 .. 5 ) >>++
  • 189.
  • 190.
    Result @number >>++2 , 3 , 4 , 5 , 6
  • 191.
    More Complicated (1 .. 5 ) >>+>> 1
  • 192.
    Check Your Spaces(1..5) _ >>+>> _ 1
  • 193.
    Same Result (1 .. 5 ) >>+>> 1 2 , 3 , 4 , 5 , 6
  • 194.
    Reverse Hyper (1 .. 5 ) <<+<< 1
  • 195.
    Right Side Rules( 1 .. 5 ) <<+<< 1 2
  • 196.
    Both Rule ?( 1 .. 5 ) >>+<< 1
  • 197.
    Yes Both! (1 .. 5 ) >>+<< 1 Runtime Error !!!
  • 198.
    Preserves LoL ?( 1 .. 5 , [ 6 .. 9 ]) >>+>> 1
  • 199.
    Preserves LoL !( 1 .. 5 , [ 6 .. 9 ]) >>+>> 1 2 , 3 , 4 , 5 , 6 , [ 7 , 8 , 9 , 10 ]
  • 200.
    On 2 Sides? ( 1 .. 5 , [ 6 .. 9 ]) >>+<< ( 0 .. 4 , [ 1 .. 4 ])
  • 201.
    On 2 Sides! ( 1 .. 5 , [ 6 .. 9 ]) >>+<< ( 0 .. 4 , [ 1 .. 4 ]) ( 1 , 3 , 5 , 7 , 9 , [ 7 , 9 , 11 , 13 ])
  • 202.
    How About This?( 1 .. 5 , [ 6 .. 9 ]) >>+<< ( 0 .. 4 , [ 1 .. 5 ])
  • 203.
    Checks Lengths (1 .. 5 , [ 6 .. 9 ]) >>+<< ( 0 .. 4 , [ 1 .. 5 ]) Runtime Error
  • 204.
    Reduce [ ].reduce
  • 205.
    Do The Gauss[+] ( 1 .. 100 )
  • 206.
    Do The Gauss[+] ( 1 .. 100 ) 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + ...
  • 207.
    100+1 * 50[+] ( 1 .. 100 ) 5050
  • 208.
  • 209.
    Chained Comparsion [<]( 1 .. 100 ) 1 < 2 < 3 < 4 < 5 < 6 < 7 < 8 < ...
  • 210.
    Chained Comparsion [<]( 1 .. 100 ) Bool::True
  • 211.
    Junction all (1 .. 100 ) > 0
  • 212.
    Junction all (1 .. 100 ) 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ...
  • 213.
    Junction all (1 .. 100 ) > 0 ( True , True , True , True , ...
  • 214.
    Bool Context ?all ( 1 .. 100 ) > 0 True
  • 215.
    Bool Context ?all ( 1 .. 100 ) > 1 False
  • 216.
    Metaops >> [] [\ ] X Z S
  • 217.
    Triangle [\ ]triangle()
  • 218.
    Back To Gauss[\+] ( 1 .. 100 )
  • 219.
    Returns A List[\+] ( 1 .. 100 ) ((((( 1 ) + 2 ) + 3 ) + 4 ) + 5 ) + 6 ) + ...
  • 220.
    Returns A List[\+] ( 1 .. 100 ) ( 1 , 3 , 6 , 10 , 15 , 21 , 28 , ...
  • 221.
    Metaops >> [] [\ ] X Z S
  • 222.
  • 223.
    Cross ( 1, 2 ) X ( 1 , 2 ) 11 , 12 , 21 , 22
  • 224.
    Cross With Power( 1 , 2 ) X** ( 1 , 2 )
  • 225.
    Cross With Power( 1 , 2 ) X** ( 1 , 2 ) 1 , 1 , 2 , 4
  • 226.
    Metaops >> [] [\ ] X Z S
  • 227.
  • 228.
    Zip ( 1.. 10 ) Z < a .. j > < 1a 2b 3c 4d 5e 6f ...>
  • 229.
    Zip for @a Z @b -> $a , $b {
  • 230.
    Zip ( 1.. 4 ) Z+ ( 1 .. 4 )
  • 231.
    Zip ( 1.. 4 ) Z+ ( 1 .. 4 ) 2 , 4 , 6 , 8
  • 232.
    Metaops >> [] [\ ] X Z S
  • 233.
  • 234.
  • 235.
  • 236.

Editor's Notes