Perl 6 in Kontext
Bisher:
Allgemein
Array / Hash
Regex
OOP
lichtkind.de
Allgemein
Array / Hash
Regex
OOP
Alle großen Themen
Übersicht
Variablen
Parser
Abstraktion
Alle großen Themen
Variablen
Parser
Abstraktion
Ausdrücke
OOP ==> OOL
Array / Hash
Regex
OOP
Operatoren
OOP ==> OOL
Operator
Oriented
Language
Perl 6 in Kontext
1 Wort zu Operatoren
Operatoren
Piktogramme
Operatoren
Piktogramme
schnelle Orientierung
Operatoren
Piktogramme
schnelle Orientierung
wie Einrückungen
Operatoren
Piktogramme
schnelle Orientierung
wie Leerzeilen
Perl 6 in Kontext
Perl 5 in Kontext
Perl 5 in Kontext
wantarray
Kontext: wantarray
true (else) - array
false (0|'') - scalar
undef - void
Perl 6 in Kontext
kein wantarray !!!
P6 Innereien
Kontext
=
Datentyp
=
Klasse
Typklassen:
Num
Str
Array
Hash
...
Wie Gewohnt
my $l = 12;
my $d = 'text';
Aber Implizit:
my Num $l = 12;
my Str $d = 'text';
Wer Java kennt:
public method to_string {
In P6 meist implizit
$var.to_string();
Perl 5 in Kontext
$nr =()= $str =~ /.../g;
Goatse Secret Op
$nr =()= $str =~ /.../g;
Fordert List Kontext
$nr =()= $str =~ /.../g;
Explizit in Perl 6
@() array
Explizit in Perl 6
$() scalar
@() array
%() hash
&() code
Perl 6 in Kontext
$ scalar
@ array
% hash
Invariante Sigils
$ scalar
@ array
% hash
Invariante Sigils
$scalar
@array
%hash
Zeigen kein Kontext
$scalar
@array[5]
%hash{'key'}
Schreiben wir so
$scalar
@array[5]
%hash<key>
Sigils
$ scalar
@ positional
% assoziativ
& aufrufbar
Kontextoperatoren
$() scalar
@() array
%() hash
&() code
Langversion
$() item()
@() list()
%() hash()
&() code()
Klammern optional
$() item()
@() list()
%() hash()
&() code()
Item Kontext
$() item()
@() list()
%() hash()
&() code()
List Kontext
$() item()
@() list()
%() hash()
&() code()
P5 List Kontext
$() item()
flat()
%() hash()
&() code()
Hash Kontext
$() item()
@() list()
%() hash()
&() code()
Code Kontext
$() item()
@() list()
%() hash()
&() code()
Mehr Kontext Ops
~ string
+ numeric
? boolean
Negierende Ops
~ string
+ - numeric
? ! boolean
Beispiel ohne ()
~@list
+@list
?@list
Kontext Ops
~@list @list[0].@list[1]
+@list
?@list
Kontext Ops
~@list @list[0].@list[1]
+@list @list.elems
?@list
Kontext Ops
~@list @list[0].@list[1]
+@list @list.elems
?@list @list.elems > 0
Bool Kontext
?
Bool Kontext
? !
?^ ?| ?&
^ | &
// ^^ || && ff fff
?? !!
Bool Kontext
? !
?^ ?| ?&
^ | &
// ^^ || && ff fff
?? !!
Bool Kontext
?
Bool Kontext
my $var = 45;
say ?$var;
Bool Kontext
my $var = 45;
say ?$var;
True
Bool Kontext
my $var = 45;
say ?$var;
True
Bool::True in Stringkontext
Bool Kontext
my $var = 45;
say !$var;
False
Bool::False in Stringkont.
Ist das so?
my $var = e;
say so($var);
True
Bool::True in Stringkontext
Ist das nicht so?
my $var = e;
say not $var;
False
Bool::False in Stringkont.
Hohe Präzedenz
my $var = 45;
say ?$var + 1;
Hohe Präzedenz
my $var = 45;
say ?$var + 1;
2
True in Numkontext = 1
Niedrige Präzedenz
my $var = 45;
say so $var + 1;
Niedrige Präzedenz
my $var = 45;
say so $var + 1;
True
46 im Boolkontext = True
Bool Kontext
my $var = 45;
say 1 if $var + 1;
1
46 im Boolkontext = True
Bool Kontext
my $var = 45;
say 1 if $var + 1;
1
If unless while until
Das War einfach!
? !
?^ ?| ?&
^ | &
// ^^ || && ff fff
?? !!
What the Op?
?^ ?| ?&
Forciert Bool Kontext
?^ ?| ?&
Ja, ja logische Ops
?^ ?| ?&
1+2 = ?
?^ ?| ?&
Was könnt das sein?
say 0 ?| 'wald';
Was könnt das sein?
say 0 ?| 'wald';
True
False or True = True
Was könnt das sein?
say 5 ?^ 0.0;
Was könnt das sein?
say 5 ?^ 0.0;
True
True xor False = True
Ein Sinn eröffnet sich
? !
?^ ?| ?&
^ | &
// ^^ || && ff fff
?? !!
Hmmmmm ?
^ | &
Hmmmmm ?
$var = 0 | 'wald';
say $var;
schlauer ?
$var = 0 | 'wald';
say $var;
any(0, wald)
Junctions !
$var = 0 | 'wald';
say $var;
any(0, wald)
wörtlich: 0 oder 'Wald'
Junctions !
0 | 1 | 3 | 7 = any(0,1,3,7);
Junctions !
2 ~~ 0 | 1 | 3 | 7
Junctions !
2 ~~ 0 | 1 | 3 | 7
False
Junctions !
1 == 0 | 1 | 3
Junctions !
1 == 0 | 1 | 3
any(False, True, False)
Junctions !
if $val == 0 | 1 | 3 { ...
Junctions !
if $val == 0 | 1 | 3 { ...
True
Junctions !
if $val == 0 | 1 | 3 { ...
any(False, True,
False).to_bool
Es lichtet sich
? !
?^ ?| ?&
^ | &
// ^^ || && ff fff
?? !!
! Forciert Kontext
// ^^ || && ff fff
Kurzschluß ODER
tu_dies() || tu_das();
Short Circuit OR
tu_dies() || tu_das();
tu_das() unless tu_dies();
Defined OR
dies() // das();
Defined OR
dies() // das();
das() unless defined dies();
Kurzschluß UND
tu_dies() && tu_das();
tu_das() if tu_dies();
Kurzschluß XOR
tu_dies() ^^ tu_das();
Kurzschluß XOR
tu_dies() ^^ tu_das();
my $var = tu_dies();
if not $var { $var }
else { tu_das() }
Kein else mit unless
tu_dies() ^^ tu_das();
my $var = tu_dies();
if not $var { $var }
else { tu_das() }
Alle Kurzschluß
tu_dies() || tu_das();
tu_dies() // tu_das();
tu_dies() && tu_das();
tu_dies() ^^ tu_das();
Grenzwerte
$a min $b
$a max $b
$a minmax $b
Grenzwerte
$a min $b
$a max $b
minmax @a
Flipflop
anfang() ff ende();
anfang() fff ende();
War .. | … in Skalar K.
while … {
tu() if anfang() ff ende();
tu() if anfang() fff ende();
}
Fast am Ziel
? !
?^ ?| ?&
^ | &
// || &&
?? !!
Ternärer Op
?? !!
Ternärer Op
war früher ? :
?? !!
Ternärer Op
war früher ? :
wertet in Boolkontext aus
?? !!
Ternärer Op
war früher ? :
wertet in Boolkontext aus
return Wert unverändert
?? !!
Soweit Klar?
? !
?^ ?| ?&
^ | &
// || &&
?? !!
Numeric Kontext
+ - * / % %% **
+^ +| +&
+< +>
Weiß Jeder :)
+ - * / % %% **
+^ +| +&
+< +>
Modulo
7 / 3
7/3(2.333) | 2
Modulo
7 % 3
Modulo
7 % 3
7 = 3 * 2 + 1
ModMod?
7 %% 3
Teilbar
7 %% 3
False => R 1
Numeric Kontext
+ - * / % %% **
+^ +| +&
+< +>
Bitweise Logik
+^ +| +&
Bitweiser Shift
+< +>
Numeric Kontext
+ - * / % %% **
+^ +| +&
+< +>
Was Vergessen ?
Was Vergessen ?
++
--
Geordnete Mengen
++ after
- - before
cmp
Geordnete Mengen
cmp:
Less, Same, More
Geordnete Mengen
cmp:
Less, Same, More
-1, 0, 1
Reihenfolge in Kontext
<=>
leg
cmp
Reihenfolge in Kontext
<=> Num Kontext
leg Str Kontext
cmp allgemein
Reihenfolge in Kontext
< Num Kontext
lt Str Kontext
before allgemein
Reihenfolge in Kontext
> Num Kontext
gt Str Kontext
after allgemein
Geordnete Mengen
++ 1 after
- - 1 before
Gleichheit in Kontext
== Num Kontext
eq Str Kontext
=== allgemein
Gleichheit in Kontext
== Num Kontext
eq Str Kontext
eqv allgemein
Gleichheit in Kontext
=== statische Analyse
eqv dynamisch
=:= gebunden
Reihenfolge in Kontext
if 2 eqv 2.0 {
Typ-, dann Inhaltcheck
if 2 eqv 2.0 {
Int() vs. Rat()
Typ-, dann Inhaltcheck
if 2 == 2.0 {
Typ-, dann Inhaltcheck
if 2 == 2.0 {
True (Num Kontext)
Numeric Kontext
+ - * / % %% **
+^ +| +&
+< +>
String Kontext
~
~^ ~| ~&
~~ x
Perlige to_string
~
War mal der .
~
say 'kombiniere' ~ 'Watson';
String Kontext
~
~^ ~| ~&
~~ x
Zeichenweise Logik
~^ ~| ~&
Zeichenweise Logik
1 +| 2 = 3
'a' ~| 'b' = 'c'
String Kontext
~
~^ ~| ~&
~~ x
String Kontext
~
~^ ~| ~&
~~ x
String Kontext
say '-' x 80;
String Kontext
~
~^ ~| ~&
~~ x
List Kontext
, … xx X Z
<<== <== ==> ==>>
Komma Operator
@fib = 1, 1, 2, 3, 5;
Komma Operator
$fib = (1, 1, 2, 3, 5);
Komma Operator
$fib = (1);
say $fib.WHAT;
Int
Komma Operator
$fib = (1 ,);
say $fib.WHAT;
Komma Operator
$fib = (1 ,);
say $fib.WHAT;
Parcel
Komma Operator
$fib = (1 ,);
say $fib.WHAT;
Parameter Liste
Capture Kontext
| benannte Parameter
|| positionale Parameter
List Kontext
, … xx X Z
<<== <== ==> ==>>
Sequence Operator
$d = 1, 2 … 9;
Yadda Operator
sub befriede { … }
Yadda Operator
sub befriede { … }
sub befriede { ??? }
sub befriede { !!! }
Sequence Operator
$d = 0, 1 … 9;
kann Range Op nicht!
$d = 9, 8 … 0;
kann Range Op nicht!
$d = 9 .. 0;
Sequence Operator
$zp = 1, 2, 4… 256;
Sequence Operator
$fib = 1, 1, *+* … *;
Was vergessen?
$d = 0 .. 9;
Was vergessen?
say 0 .. 9;
Keine Liste?
say 0 .. 9;
0..9
Bestimmt Kontext
say (0 .. 9);
Keine Liste ?
say (0 .. 9);
0..9
Was ist es denn?
say (0 .. 9).WHAT;
Range ???
say (0 .. 9).WHAT;
Range
Range ???
say 5 ~~ 0 .. 9;
True
So geht Liste
say @(0..9).WHAT;
List
List - Ausgabe?
say @(0 .. 9);
0 1 2 3 4 5 6 7 8 9
for macht Listkontext
say $_ for 0 .. 9;
0 1 2 3 4 5 6 7 8 9
for macht Listkontext
say for 0 .. 9;
for macht Listkontext
.say for 0 .. 9;
0 1 2 3 4 5 6 7 8 9
List Kontext
, … xx X Z
<<== <== ==> ==>>
Spielen mit Listen
xx X Z
xx Operator
xx Operator
say 'eins zwo eins zwo';
xx Operator
say 'eins zwo eins zwo';
say q:words(eins zwo) xx 2;
xx Operator
say 'eins zwo eins zwo';
say q:words(eins zwo) xx 2;
say q:w(eins zwo) xx 2;
xx Operator
say 'eins zwo eins zwo';
say q:words(eins zwo) xx 2;
say q:w(eins zwo) xx 2;
say qw(eins zwo) xx 2;
xx Operator
say 'eins zwo eins zwo';
say q:words(eins zwo) xx 2;
say q:w(eins zwo) xx 2;
say qw(eins zwo) xx 2;
say <eins ...
X Operator
say <eins zwo> X
<dan rabauke>;
Kartesisches Produkt
say <eins zwo> X
<dan rabauke>;
eins dan eins rabauke
zwo dan zwo rabauke
Z Operator
say <eins zwo> Z
<dan rabauke>;
Reißverschluss
say <eins zwo> Z
<dan rabauke>;
eins dan zwo rabauke
Reißverschluss
say <eins zwo> zip
<dan rabauke>;
eins dan zwo rabauke
Reißverschluss
for @li Z @re -> $l, $r {
List Kontext
, xx X Z
<<== <== ==> ==>>
Schwartz Transform
my @output =
map { $_->[0] }
sort { $a->[1] cmp $b->[1] }
map { [$_,expensive_func($_)] }
@input;
Pipe Operator
my @output
<== map { $_[0] }
<== sort { $^a[1] cmp $^b[1] }
<== map { [$_,expensive_func($_)] }
<== @input;
Andere Richtung
@input
==> map { [$_,expensive_func($_)] }
==> sort { $^a[1] cmp $^b[1] }
==> map { $_[0] }
==> my @output;
Append Mode
my @output
<<== map { $_[0] }
<<== sort { $^a[1] cmp $^b[1] }
<<== map { [$_,expensive_func($_)] }
<<== @input;
Pointy Sub
for @input -> $i { ...
List Kontext
, xx X Z
<<== <== ==> ==>>
MetaOps
= !
X Z R S
[] []
<< >>
Meta Op =
@summe += 3;
Meta Op !
if $alter !< 18 {
Meta Op !
if $alter !< 18 {
# echter P6 code
Meta Op R
$alter = 2 R- 18;
# == 16
Meta Op S
$alter = 2 S- 18;
# == -16
Meta Op S
$alter = 2 S- 18;
# kein sichtbarer Effekt
Meta Op S
$alter = 2 S- 18;
# ! Parallelisierung
Meta Op S
$alter = 2 S- 18;
# ! später wichtiger
MetaOps
= !
X Z R S
[] []
<< >>
Meta Op X
Wir erinnern
say <1 2> X <a b>
1 a 1 b 2 a 2 b
Wir erinnern
<1 2> X <a b>
<1 a 1 b 2 a 2 b>
Kartesisches Produkt
<1 2> X <a b>
'1','a','1','b','2','a','2','b'
Kartesischen Paare
<1 2> X~ <a b>
'1a','1b','2a','2b'
Kartesisches Produkt
<1 2> X+ <a b>
Stacktrace
Kartesischen Paare
<1 2> X* <3 4>
3, 4, 6, 8
Meta Op Z
# manche ahnen was
kommt
Metaop Z
<1 2> Z* <3 4>
3, 8
Metaop Z
(<1 2>;<3 4>).zipwith(&[*])
3, 8
Metaop Z
(<1 2>;<3 4>).zipwith(&[*])
<1 2> Z* <3 4>
Metaop Z
(<1 2>;<3 4>).zip()
<1 2> Z <3 4>
Metaop Z
(<1 2>;<3 4>).cross()
<1 2> X <3 4>
Metaop Z
(<1 2>;<3 4>).crosswith(&[*])
<1 2> X* <3 4>
MetaOps
= !
X Z R S
[] []
<< >>
Meta Op []
Mach mir den Gauss
(1..100).reduce(&[+])
Forciert List Kontext
(1..100).reduce(&[+])
[+] 1 .. 100
Forciert List Kontext
True
[<] 1 .. 100
Whats datn?
(1..100).triangle(&[+])
[+] 1 .. 100
Whats datn?
1, 3, 6
[+] 1 .. 3
Whats datn?
1=1, 1+2=3, 1+2+3=6
[+] 1 .. 3
Meta Op <<
Geburtstagsfeier !!!
@alter >>+=>> 1;
Alle werden älter
@alter == 18, 22, 35;
@alter = @alter >>+>> 1;
@alter == 19, 23, 36;
Nur einer wird älter
@alter == 18, 22, 35;
@alter = @alter <<+<< 1;
@alter == 19;
Interessante Fälle
<18, 22, 35> >>+<< <1, 2>
<18, 22, 35> <<+>> <1, 2>
Interessante Fälle
<18, 22, 35> >>+<< <1, 2>
ERROR
<18, 22, 35> <<+>> <1, 2>
19, 24, 36
Komplexität ++
~~
heute nicht
Danke
vv
P6kontext2014
Nächste SlideShare
Wird geladen in …5
×

P6kontext2014

394 Aufrufe

Veröffentlicht am

A tour through Perl 6 Operators

Veröffentlicht in: Software
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
394
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
2
Aktionen
Geteilt
0
Downloads
1
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

P6kontext2014

  1. 1. Perl 6 in Kontext
  2. 2. Bisher: Allgemein Array / Hash Regex OOP
  3. 3. lichtkind.de Allgemein Array / Hash Regex OOP
  4. 4. Alle großen Themen Übersicht Variablen Parser Abstraktion
  5. 5. Alle großen Themen Variablen Parser Abstraktion Ausdrücke
  6. 6. OOP ==> OOL Array / Hash Regex OOP Operatoren
  7. 7. OOP ==> OOL Operator Oriented Language
  8. 8. Perl 6 in Kontext
  9. 9. 1 Wort zu Operatoren
  10. 10. Operatoren Piktogramme
  11. 11. Operatoren Piktogramme schnelle Orientierung
  12. 12. Operatoren Piktogramme schnelle Orientierung wie Einrückungen
  13. 13. Operatoren Piktogramme schnelle Orientierung wie Leerzeilen
  14. 14. Perl 6 in Kontext
  15. 15. Perl 5 in Kontext
  16. 16. Perl 5 in Kontext wantarray
  17. 17. Kontext: wantarray true (else) - array false (0|'') - scalar undef - void
  18. 18. Perl 6 in Kontext kein wantarray !!!
  19. 19. P6 Innereien Kontext = Datentyp = Klasse
  20. 20. Typklassen: Num Str Array Hash ...
  21. 21. Wie Gewohnt my $l = 12; my $d = 'text';
  22. 22. Aber Implizit: my Num $l = 12; my Str $d = 'text';
  23. 23. Wer Java kennt: public method to_string {
  24. 24. In P6 meist implizit $var.to_string();
  25. 25. Perl 5 in Kontext $nr =()= $str =~ /.../g;
  26. 26. Goatse Secret Op $nr =()= $str =~ /.../g;
  27. 27. Fordert List Kontext $nr =()= $str =~ /.../g;
  28. 28. Explizit in Perl 6 @() array
  29. 29. Explizit in Perl 6 $() scalar @() array %() hash &() code
  30. 30. Perl 6 in Kontext $ scalar @ array % hash
  31. 31. Invariante Sigils $ scalar @ array % hash
  32. 32. Invariante Sigils $scalar @array %hash
  33. 33. Zeigen kein Kontext $scalar @array[5] %hash{'key'}
  34. 34. Schreiben wir so $scalar @array[5] %hash<key>
  35. 35. Sigils $ scalar @ positional % assoziativ & aufrufbar
  36. 36. Kontextoperatoren $() scalar @() array %() hash &() code
  37. 37. Langversion $() item() @() list() %() hash() &() code()
  38. 38. Klammern optional $() item() @() list() %() hash() &() code()
  39. 39. Item Kontext $() item() @() list() %() hash() &() code()
  40. 40. List Kontext $() item() @() list() %() hash() &() code()
  41. 41. P5 List Kontext $() item() flat() %() hash() &() code()
  42. 42. Hash Kontext $() item() @() list() %() hash() &() code()
  43. 43. Code Kontext $() item() @() list() %() hash() &() code()
  44. 44. Mehr Kontext Ops ~ string + numeric ? boolean
  45. 45. Negierende Ops ~ string + - numeric ? ! boolean
  46. 46. Beispiel ohne () ~@list +@list ?@list
  47. 47. Kontext Ops ~@list @list[0].@list[1] +@list ?@list
  48. 48. Kontext Ops ~@list @list[0].@list[1] +@list @list.elems ?@list
  49. 49. Kontext Ops ~@list @list[0].@list[1] +@list @list.elems ?@list @list.elems > 0
  50. 50. Bool Kontext ?
  51. 51. Bool Kontext ? ! ?^ ?| ?& ^ | & // ^^ || && ff fff ?? !!
  52. 52. Bool Kontext ? ! ?^ ?| ?& ^ | & // ^^ || && ff fff ?? !!
  53. 53. Bool Kontext ?
  54. 54. Bool Kontext my $var = 45; say ?$var;
  55. 55. Bool Kontext my $var = 45; say ?$var; True
  56. 56. Bool Kontext my $var = 45; say ?$var; True Bool::True in Stringkontext
  57. 57. Bool Kontext my $var = 45; say !$var; False Bool::False in Stringkont.
  58. 58. Ist das so? my $var = e; say so($var); True Bool::True in Stringkontext
  59. 59. Ist das nicht so? my $var = e; say not $var; False Bool::False in Stringkont.
  60. 60. Hohe Präzedenz my $var = 45; say ?$var + 1;
  61. 61. Hohe Präzedenz my $var = 45; say ?$var + 1; 2 True in Numkontext = 1
  62. 62. Niedrige Präzedenz my $var = 45; say so $var + 1;
  63. 63. Niedrige Präzedenz my $var = 45; say so $var + 1; True 46 im Boolkontext = True
  64. 64. Bool Kontext my $var = 45; say 1 if $var + 1; 1 46 im Boolkontext = True
  65. 65. Bool Kontext my $var = 45; say 1 if $var + 1; 1 If unless while until
  66. 66. Das War einfach! ? ! ?^ ?| ?& ^ | & // ^^ || && ff fff ?? !!
  67. 67. What the Op? ?^ ?| ?&
  68. 68. Forciert Bool Kontext ?^ ?| ?&
  69. 69. Ja, ja logische Ops ?^ ?| ?&
  70. 70. 1+2 = ? ?^ ?| ?&
  71. 71. Was könnt das sein? say 0 ?| 'wald';
  72. 72. Was könnt das sein? say 0 ?| 'wald'; True False or True = True
  73. 73. Was könnt das sein? say 5 ?^ 0.0;
  74. 74. Was könnt das sein? say 5 ?^ 0.0; True True xor False = True
  75. 75. Ein Sinn eröffnet sich ? ! ?^ ?| ?& ^ | & // ^^ || && ff fff ?? !!
  76. 76. Hmmmmm ? ^ | &
  77. 77. Hmmmmm ? $var = 0 | 'wald'; say $var;
  78. 78. schlauer ? $var = 0 | 'wald'; say $var; any(0, wald)
  79. 79. Junctions ! $var = 0 | 'wald'; say $var; any(0, wald) wörtlich: 0 oder 'Wald'
  80. 80. Junctions ! 0 | 1 | 3 | 7 = any(0,1,3,7);
  81. 81. Junctions ! 2 ~~ 0 | 1 | 3 | 7
  82. 82. Junctions ! 2 ~~ 0 | 1 | 3 | 7 False
  83. 83. Junctions ! 1 == 0 | 1 | 3
  84. 84. Junctions ! 1 == 0 | 1 | 3 any(False, True, False)
  85. 85. Junctions ! if $val == 0 | 1 | 3 { ...
  86. 86. Junctions ! if $val == 0 | 1 | 3 { ... True
  87. 87. Junctions ! if $val == 0 | 1 | 3 { ... any(False, True, False).to_bool
  88. 88. Es lichtet sich ? ! ?^ ?| ?& ^ | & // ^^ || && ff fff ?? !!
  89. 89. ! Forciert Kontext // ^^ || && ff fff
  90. 90. Kurzschluß ODER tu_dies() || tu_das();
  91. 91. Short Circuit OR tu_dies() || tu_das(); tu_das() unless tu_dies();
  92. 92. Defined OR dies() // das();
  93. 93. Defined OR dies() // das(); das() unless defined dies();
  94. 94. Kurzschluß UND tu_dies() && tu_das(); tu_das() if tu_dies();
  95. 95. Kurzschluß XOR tu_dies() ^^ tu_das();
  96. 96. Kurzschluß XOR tu_dies() ^^ tu_das(); my $var = tu_dies(); if not $var { $var } else { tu_das() }
  97. 97. Kein else mit unless tu_dies() ^^ tu_das(); my $var = tu_dies(); if not $var { $var } else { tu_das() }
  98. 98. Alle Kurzschluß tu_dies() || tu_das(); tu_dies() // tu_das(); tu_dies() && tu_das(); tu_dies() ^^ tu_das();
  99. 99. Grenzwerte $a min $b $a max $b $a minmax $b
  100. 100. Grenzwerte $a min $b $a max $b minmax @a
  101. 101. Flipflop anfang() ff ende(); anfang() fff ende();
  102. 102. War .. | … in Skalar K. while … { tu() if anfang() ff ende(); tu() if anfang() fff ende(); }
  103. 103. Fast am Ziel ? ! ?^ ?| ?& ^ | & // || && ?? !!
  104. 104. Ternärer Op ?? !!
  105. 105. Ternärer Op war früher ? : ?? !!
  106. 106. Ternärer Op war früher ? : wertet in Boolkontext aus ?? !!
  107. 107. Ternärer Op war früher ? : wertet in Boolkontext aus return Wert unverändert ?? !!
  108. 108. Soweit Klar? ? ! ?^ ?| ?& ^ | & // || && ?? !!
  109. 109. Numeric Kontext + - * / % %% ** +^ +| +& +< +>
  110. 110. Weiß Jeder :) + - * / % %% ** +^ +| +& +< +>
  111. 111. Modulo 7 / 3 7/3(2.333) | 2
  112. 112. Modulo 7 % 3
  113. 113. Modulo 7 % 3 7 = 3 * 2 + 1
  114. 114. ModMod? 7 %% 3
  115. 115. Teilbar 7 %% 3 False => R 1
  116. 116. Numeric Kontext + - * / % %% ** +^ +| +& +< +>
  117. 117. Bitweise Logik +^ +| +&
  118. 118. Bitweiser Shift +< +>
  119. 119. Numeric Kontext + - * / % %% ** +^ +| +& +< +>
  120. 120. Was Vergessen ?
  121. 121. Was Vergessen ? ++ --
  122. 122. Geordnete Mengen ++ after - - before cmp
  123. 123. Geordnete Mengen cmp: Less, Same, More
  124. 124. Geordnete Mengen cmp: Less, Same, More -1, 0, 1
  125. 125. Reihenfolge in Kontext <=> leg cmp
  126. 126. Reihenfolge in Kontext <=> Num Kontext leg Str Kontext cmp allgemein
  127. 127. Reihenfolge in Kontext < Num Kontext lt Str Kontext before allgemein
  128. 128. Reihenfolge in Kontext > Num Kontext gt Str Kontext after allgemein
  129. 129. Geordnete Mengen ++ 1 after - - 1 before
  130. 130. Gleichheit in Kontext == Num Kontext eq Str Kontext === allgemein
  131. 131. Gleichheit in Kontext == Num Kontext eq Str Kontext eqv allgemein
  132. 132. Gleichheit in Kontext === statische Analyse eqv dynamisch =:= gebunden
  133. 133. Reihenfolge in Kontext if 2 eqv 2.0 {
  134. 134. Typ-, dann Inhaltcheck if 2 eqv 2.0 { Int() vs. Rat()
  135. 135. Typ-, dann Inhaltcheck if 2 == 2.0 {
  136. 136. Typ-, dann Inhaltcheck if 2 == 2.0 { True (Num Kontext)
  137. 137. Numeric Kontext + - * / % %% ** +^ +| +& +< +>
  138. 138. String Kontext ~ ~^ ~| ~& ~~ x
  139. 139. Perlige to_string ~
  140. 140. War mal der . ~ say 'kombiniere' ~ 'Watson';
  141. 141. String Kontext ~ ~^ ~| ~& ~~ x
  142. 142. Zeichenweise Logik ~^ ~| ~&
  143. 143. Zeichenweise Logik 1 +| 2 = 3 'a' ~| 'b' = 'c'
  144. 144. String Kontext ~ ~^ ~| ~& ~~ x
  145. 145. String Kontext ~ ~^ ~| ~& ~~ x
  146. 146. String Kontext say '-' x 80;
  147. 147. String Kontext ~ ~^ ~| ~& ~~ x
  148. 148. List Kontext , … xx X Z <<== <== ==> ==>>
  149. 149. Komma Operator @fib = 1, 1, 2, 3, 5;
  150. 150. Komma Operator $fib = (1, 1, 2, 3, 5);
  151. 151. Komma Operator $fib = (1); say $fib.WHAT; Int
  152. 152. Komma Operator $fib = (1 ,); say $fib.WHAT;
  153. 153. Komma Operator $fib = (1 ,); say $fib.WHAT; Parcel
  154. 154. Komma Operator $fib = (1 ,); say $fib.WHAT; Parameter Liste
  155. 155. Capture Kontext | benannte Parameter || positionale Parameter
  156. 156. List Kontext , … xx X Z <<== <== ==> ==>>
  157. 157. Sequence Operator $d = 1, 2 … 9;
  158. 158. Yadda Operator sub befriede { … }
  159. 159. Yadda Operator sub befriede { … } sub befriede { ??? } sub befriede { !!! }
  160. 160. Sequence Operator $d = 0, 1 … 9;
  161. 161. kann Range Op nicht! $d = 9, 8 … 0;
  162. 162. kann Range Op nicht! $d = 9 .. 0;
  163. 163. Sequence Operator $zp = 1, 2, 4… 256;
  164. 164. Sequence Operator $fib = 1, 1, *+* … *;
  165. 165. Was vergessen? $d = 0 .. 9;
  166. 166. Was vergessen? say 0 .. 9;
  167. 167. Keine Liste? say 0 .. 9; 0..9
  168. 168. Bestimmt Kontext say (0 .. 9);
  169. 169. Keine Liste ? say (0 .. 9); 0..9
  170. 170. Was ist es denn? say (0 .. 9).WHAT;
  171. 171. Range ??? say (0 .. 9).WHAT; Range
  172. 172. Range ??? say 5 ~~ 0 .. 9; True
  173. 173. So geht Liste say @(0..9).WHAT; List
  174. 174. List - Ausgabe? say @(0 .. 9); 0 1 2 3 4 5 6 7 8 9
  175. 175. for macht Listkontext say $_ for 0 .. 9; 0 1 2 3 4 5 6 7 8 9
  176. 176. for macht Listkontext say for 0 .. 9;
  177. 177. for macht Listkontext .say for 0 .. 9; 0 1 2 3 4 5 6 7 8 9
  178. 178. List Kontext , … xx X Z <<== <== ==> ==>>
  179. 179. Spielen mit Listen xx X Z
  180. 180. xx Operator
  181. 181. xx Operator say 'eins zwo eins zwo';
  182. 182. xx Operator say 'eins zwo eins zwo'; say q:words(eins zwo) xx 2;
  183. 183. xx Operator say 'eins zwo eins zwo'; say q:words(eins zwo) xx 2; say q:w(eins zwo) xx 2;
  184. 184. xx Operator say 'eins zwo eins zwo'; say q:words(eins zwo) xx 2; say q:w(eins zwo) xx 2; say qw(eins zwo) xx 2;
  185. 185. xx Operator say 'eins zwo eins zwo'; say q:words(eins zwo) xx 2; say q:w(eins zwo) xx 2; say qw(eins zwo) xx 2; say <eins zwo> xx 2;
  186. 186. X Operator say <eins zwo> X <dan rabauke>;
  187. 187. Kartesisches Produkt say <eins zwo> X <dan rabauke>; eins dan eins rabauke zwo dan zwo rabauke
  188. 188. Z Operator say <eins zwo> Z <dan rabauke>;
  189. 189. Reißverschluss say <eins zwo> Z <dan rabauke>; eins dan zwo rabauke
  190. 190. Reißverschluss say <eins zwo> zip <dan rabauke>; eins dan zwo rabauke
  191. 191. Reißverschluss for @li Z @re -> $l, $r {
  192. 192. List Kontext , xx X Z <<== <== ==> ==>>
  193. 193. Schwartz Transform my @output = map { $_->[0] } sort { $a->[1] cmp $b->[1] } map { [$_,expensive_func($_)] } @input;
  194. 194. Pipe Operator my @output <== map { $_[0] } <== sort { $^a[1] cmp $^b[1] } <== map { [$_,expensive_func($_)] } <== @input;
  195. 195. Andere Richtung @input ==> map { [$_,expensive_func($_)] } ==> sort { $^a[1] cmp $^b[1] } ==> map { $_[0] } ==> my @output;
  196. 196. Append Mode my @output <<== map { $_[0] } <<== sort { $^a[1] cmp $^b[1] } <<== map { [$_,expensive_func($_)] } <<== @input;
  197. 197. Pointy Sub for @input -> $i { ...
  198. 198. List Kontext , xx X Z <<== <== ==> ==>>
  199. 199. MetaOps = ! X Z R S [] [] << >>
  200. 200. Meta Op = @summe += 3;
  201. 201. Meta Op ! if $alter !< 18 {
  202. 202. Meta Op ! if $alter !< 18 { # echter P6 code
  203. 203. Meta Op R $alter = 2 R- 18; # == 16
  204. 204. Meta Op S $alter = 2 S- 18; # == -16
  205. 205. Meta Op S $alter = 2 S- 18; # kein sichtbarer Effekt
  206. 206. Meta Op S $alter = 2 S- 18; # ! Parallelisierung
  207. 207. Meta Op S $alter = 2 S- 18; # ! später wichtiger
  208. 208. MetaOps = ! X Z R S [] [] << >>
  209. 209. Meta Op X
  210. 210. Wir erinnern say <1 2> X <a b> 1 a 1 b 2 a 2 b
  211. 211. Wir erinnern <1 2> X <a b> <1 a 1 b 2 a 2 b>
  212. 212. Kartesisches Produkt <1 2> X <a b> '1','a','1','b','2','a','2','b'
  213. 213. Kartesischen Paare <1 2> X~ <a b> '1a','1b','2a','2b'
  214. 214. Kartesisches Produkt <1 2> X+ <a b> Stacktrace
  215. 215. Kartesischen Paare <1 2> X* <3 4> 3, 4, 6, 8
  216. 216. Meta Op Z # manche ahnen was kommt
  217. 217. Metaop Z <1 2> Z* <3 4> 3, 8
  218. 218. Metaop Z (<1 2>;<3 4>).zipwith(&[*]) 3, 8
  219. 219. Metaop Z (<1 2>;<3 4>).zipwith(&[*]) <1 2> Z* <3 4>
  220. 220. Metaop Z (<1 2>;<3 4>).zip() <1 2> Z <3 4>
  221. 221. Metaop Z (<1 2>;<3 4>).cross() <1 2> X <3 4>
  222. 222. Metaop Z (<1 2>;<3 4>).crosswith(&[*]) <1 2> X* <3 4>
  223. 223. MetaOps = ! X Z R S [] [] << >>
  224. 224. Meta Op []
  225. 225. Mach mir den Gauss (1..100).reduce(&[+])
  226. 226. Forciert List Kontext (1..100).reduce(&[+]) [+] 1 .. 100
  227. 227. Forciert List Kontext True [<] 1 .. 100
  228. 228. Whats datn? (1..100).triangle(&[+]) [+] 1 .. 100
  229. 229. Whats datn? 1, 3, 6 [+] 1 .. 3
  230. 230. Whats datn? 1=1, 1+2=3, 1+2+3=6 [+] 1 .. 3
  231. 231. Meta Op <<
  232. 232. Geburtstagsfeier !!! @alter >>+=>> 1;
  233. 233. Alle werden älter @alter == 18, 22, 35; @alter = @alter >>+>> 1; @alter == 19, 23, 36;
  234. 234. Nur einer wird älter @alter == 18, 22, 35; @alter = @alter <<+<< 1; @alter == 19;
  235. 235. Interessante Fälle <18, 22, 35> >>+<< <1, 2> <18, 22, 35> <<+>> <1, 2>
  236. 236. Interessante Fälle <18, 22, 35> >>+<< <1, 2> ERROR <18, 22, 35> <<+>> <1, 2> 19, 24, 36
  237. 237. Komplexität ++ ~~ heute nicht
  238. 238. Danke vv

×