perl 6 in context

288
Perl 6 in context

Upload: lichtkind

Post on 11-Jun-2015

457 views

Category:

Engineering


7 download

DESCRIPTION

There are a lot of operators in Perl 6, so many that it can be called an OOL: operator oriented language. Here I describe most of them from the angle of contexts, which Perl 6 has also much more than Perl 5.

TRANSCRIPT

Page 1: Perl 6 in Context

Perl 6 in context

Page 2: Perl 6 in Context

Up to now:

generalArray / Hash

RegexOOP

Page 3: Perl 6 in Context

lichtkind.de

generalArray / Hash

RegexOOP

Page 4: Perl 6 in Context

big topics

generalvariable

parserabstraction

Page 5: Perl 6 in Context

big topics

variableparser

abstractionexpression

Page 6: Perl 6 in Context

OOP ==> OOL

Array / HashRegexOOP

Operator

Page 7: Perl 6 in Context

OOP ==> OOL

OperatorOrientedLanguage

Page 8: Perl 6 in Context

word about operators

Page 9: Perl 6 in Context

operator

pictogram

Page 10: Perl 6 in Context
Page 11: Perl 6 in Context

Edge Detection

pictogramquick orientationlike indentation

Page 12: Perl 6 in Context

Done By Retina

pictogramquick orientationlike indentation

Page 13: Perl 6 in Context

I forgot to mention

Page 14: Perl 6 in Context

Visual Cortex

Page 15: Perl 6 in Context

information / min

incoming:12 000 000

conscious: 40

Page 16: Perl 6 in Context

operator

pictogramquick orientation

Page 17: Perl 6 in Context

Visual Recognition

pictogramquick orientationlike empty line

Page 18: Perl 6 in Context

Visual Recognition

pictogramquick orientationlike indentation

Page 19: Perl 6 in Context

Visual Recognition

pictogramquick orientationdecor. comments

Page 20: Perl 6 in Context

One more thing ...

Page 21: Perl 6 in Context

emotional brain

Page 22: Perl 6 in Context

Antonio Damasio

Page 23: Perl 6 in Context

Antonio Damasio

LeadingNeurologist

Page 24: Perl 6 in Context

Emotion != Feelings

Page 25: Perl 6 in Context

Feeling

Page 26: Perl 6 in Context

Emotion

Page 27: Perl 6 in Context

Damasio:

Emotion is how brain deal with

huge data quantities.

Page 28: Perl 6 in Context

does association

Page 29: Perl 6 in Context

Emotions:

triggered (words|pic)values & judgement

enables memory

Page 30: Perl 6 in Context

TIMTOWTDI =

Respect your emotional wiring

(experience)

Page 31: Perl 6 in Context

TIMTOWTDI =

less emotional stress = higher

productivity

Page 32: Perl 6 in Context

Ambiguous:

Java: Str + Str

Page 33: Perl 6 in Context

Not Ambiguous:

Perl 5/6: Num + Num

Page 34: Perl 6 in Context

Topicalizer

Perl 6:class instead

package

Page 35: Perl 6 in Context

One more thing ...

Page 36: Perl 6 in Context

Jill Bolte

Page 37: Perl 6 in Context

Jill Bolte:Neuroanatomisthaving left side

stroke, experiencing just the emotional

mind

Page 38: Perl 6 in Context

Jill Bolte:

left brain works in sequence

(future/past) and enables language

Page 39: Perl 6 in Context

Jill Bolte:right brain works in parallel, cares about

now, emotions, whole picture,

graphics

Page 40: Perl 6 in Context

conclusio:

use right brain to grok complex

systems

Page 41: Perl 6 in Context

James Gates

Page 42: Perl 6 in Context

Adinkra:

Page 43: Perl 6 in Context
Page 44: Perl 6 in Context

New P6 Meta Ops:

more directright brain

access

Page 45: Perl 6 in Context

End of my Sermon

Page 46: Perl 6 in Context

Synopsis 1: Overview

Page 47: Perl 6 in Context

Perl 5 in context

Page 48: Perl 6 in Context

Perl 5 in context

wantarray

Page 49: Perl 6 in Context

context: wantarray

true (else) - arrayfalse (0|'') - scalar

undef - void

Page 50: Perl 6 in Context

Perl 6 in context

no wantarray !!!

Page 51: Perl 6 in Context

P6 Internalscontext

=data type

=class

Page 52: Perl 6 in Context

Type Classes:NumStr

ArrayHash

...

Page 53: Perl 6 in Context

As Known:

my $num = 12;my $str = 'text';

Page 54: Perl 6 in Context

Optional:

my Num $num = 12;my Str $str = 'text';

Page 55: Perl 6 in Context

How to convert ?

my Num $num = 12;my Str $str = 'text';

Page 56: Perl 6 in Context

As Java knows ?

public method to_string {

Page 57: Perl 6 in Context

Not Perl 6:

$var.to_string();

Page 58: Perl 6 in Context

Not Perl 5:

$var.to_string();

Page 59: Perl 6 in Context

Perl 5 in Context

$nr =()= $str =~ /.../g;

Page 60: Perl 6 in Context

Secret Goatse Op

$nr =()= $str =~ /.../g;

Page 61: Perl 6 in Context

No Real List Context

$nr =()= $str =~ /.../g;

Page 62: Perl 6 in Context

Explicit in Perl 6

@() array

Page 63: Perl 6 in Context

Explicit in Perl 5

@{} array

Page 64: Perl 6 in Context

Explicit in Perl 6 $() scalar

@() array %() hash

&() code ::() namespace

Page 65: Perl 6 in Context

Perl 6 Major Contex $ scalar@ array% hash

Page 66: Perl 6 in Context

Invariant Sigil $ scalar@ array% hash

Page 67: Perl 6 in Context

Invariant Sigil $scalar @array %hash

Page 68: Perl 6 in Context

Don't Show Context $scalar

@array[5] %hash{'key'}

Page 69: Perl 6 in Context

Native Hash Slice $scalar

@array[5] %hash<key>

Page 70: Perl 6 in Context

Sigils $ scalar

@ positional % asociative & callable

:: namespace

Page 71: Perl 6 in Context

Context operator $() scalar @() array %() hash

&() code ::() namespace

Page 72: Perl 6 in Context

With Long Version $() item()@() list()

%() hash() &() code() ::()

Page 73: Perl 6 in Context

Braces Optional $() item()@() list()

%() hash() &() code()

Page 74: Perl 6 in Context

Item Context $() item()@() list()

%() hash() &() code() ::()

Page 75: Perl 6 in Context

List Context $() item()@() list()

%() hash() &() code() ::()

Page 76: Perl 6 in Context

P5 List Context $() item()@() flat()

%() hash() &() code() ::()

Page 77: Perl 6 in Context

Hash Context $() item()@() list()

%() hash() &() code() ::()

Page 78: Perl 6 in Context

Code Context $() item()@() list()

%() hash() &() code() ::()

Page 79: Perl 6 in Context

Namescpace Context $() item()@() list()

%() hash() &() code()

::( $str )

Page 80: Perl 6 in Context

More Context Op

~ string + numeric ? boolean

Page 81: Perl 6 in Context

Negative Op

~ string + - numeric ? ! boolean

Page 82: Perl 6 in Context

Example without ()

~@list +@list ?@list

Page 83: Perl 6 in Context

String Context

~@list @list[0]~@list[1] +@list ?@list

Page 84: Perl 6 in Context

Num Context

~@list @list[0]~@list[1] +@list @list.elems ?@list

Page 85: Perl 6 in Context

Bool Context

~@list @list[0]~@list[1]+@list @list.elems

?@list @list.elems > 0

Page 86: Perl 6 in Context

Bool Context

?

Page 87: Perl 6 in Context

Bool Context

? !?^ ?| ?& ^ | &

// ^^ || && ff fff?? !!

Page 88: Perl 6 in Context

Grey is Logic

? !?^ ?| ?& ^ | &

// ^^ || && ff fff?? !!

Page 89: Perl 6 in Context

Bool Context

?

Page 90: Perl 6 in Context

Bool Context

my $var = 45; say ?$var;

Page 91: Perl 6 in Context

Bool Context

my $var = 45; say ?$var;

True

Page 92: Perl 6 in Context

Bool Context

my $var = 45; say ?$var;

True

Bool::True in String Context

Page 93: Perl 6 in Context

Bool Context

my $var = 45; say !$var;

False

Bool::False v String Cont.

Page 94: Perl 6 in Context

Is it so ?

my $var = e; say so($var);

True

Bool::True v String Context

Page 95: Perl 6 in Context

Is it not so ?

my $var = e; say not $var;

False

Bool::False v String Cont.

Page 96: Perl 6 in Context

High Precedence

my $var = 45; say ?$var + 1;

Page 97: Perl 6 in Context

High Precedence

my $var = 45; say ?$var + 1;

2

True in Num Context = 1

Page 98: Perl 6 in Context

Low Precedence

my $var = 45; say so $var + 1;

Page 99: Perl 6 in Context

Low Precedence

my $var = 45; say so $var + 1;

True

46 v Bool Kontext = True

Page 100: Perl 6 in Context

Bool Context

my $var = 45; say 1 if $var + 1;

1

46 v Bool Context = True

Page 101: Perl 6 in Context

Bool Context

my $var = 45; say 1 if $var + 1;

1

If unless while until

Page 102: Perl 6 in Context

That was easy !

? !?^ ?| ?& ^ | &

// ^^ || && ff fff?? !!

Page 103: Perl 6 in Context

Still ?

?^ ?| ?&

Page 104: Perl 6 in Context

Wants Bool Context

?^ ?| ?&

Page 105: Perl 6 in Context

Known Logic Ops

?^ ?| ?&

Page 106: Perl 6 in Context

1+2 = ?

?^ ?| ?&

Page 107: Perl 6 in Context

What could that be?

say 0 ?| 'tree';

Page 108: Perl 6 in Context

Clearly !!!

say 0 ?| 'tree';

TrueFalse or True = True

Page 109: Perl 6 in Context

What could that be?

say 5 ?^ 0.0;

Page 110: Perl 6 in Context

Clear as daylight.

say 5 ?^ 0.0;

TrueTrue xor False = True

Page 111: Perl 6 in Context

You get a sense

? !?^ ?| ?& ^ | &

// ^^ || && ff fff?? !!

Page 112: Perl 6 in Context

Hmmmmm ?

^ | &

Page 113: Perl 6 in Context

Hmmmmm ?

$var = 0 | 'tree';say $var;

Page 114: Perl 6 in Context

Now Know More ?

$var = 0 | 'tree';say $var;

any(0, 'tree')

Page 115: Perl 6 in Context

Junctions !

$var = 0 | 'tree';say $var;

any(0, tree)literally: 0 or 'tree'

Page 116: Perl 6 in Context

Short Overview

0 | 1 | 3 = any(0,1,3);

0 & 1 & 3 = all(0,1,3);

0 ^ 1 ^ 3 = one(0,1,3);

Page 117: Perl 6 in Context

Quiz Time !

2 ~~ 0 | 1 | 3 | 7

Page 118: Perl 6 in Context

Expected Differently

2 ~~ 0 | 1 | 3 | 7

False

Page 119: Perl 6 in Context

Next Question

1 == 0 | 1 | 3

Page 120: Perl 6 in Context

You get:

1 == 0 | 1 | 3

any(False, True, False)

Page 121: Perl 6 in Context

Nicer if statements !

if $val == 0 | 1 | 3 { ...

Page 122: Perl 6 in Context

Junctions !

if $val == 0 | 1 | 3 { ...

True

Page 123: Perl 6 in Context

Junctions !

if $val == 0 | 1 | 3 { ...

any(False, True, False).to_bool

Page 124: Perl 6 in Context

It Gets Clearer

? !?^ ?| ?& ^ | &

// ^^ || && ff fff?? !!

Page 125: Perl 6 in Context

No Forced Context

// ^^ || && ff fff

Page 126: Perl 6 in Context

short circuit OR

doit() || doelse();

Page 127: Perl 6 in Context

short circuit OR

doit() || doelse();

doit() unless doelse();

Page 128: Perl 6 in Context

Defined OR

doit() // doelse();

Page 129: Perl 6 in Context

Defined OR

doit() // doelse();

doelse() unless defined doit();

Page 130: Perl 6 in Context

short circuit AND

doit() && doelse();

doelse() if doit();

Page 131: Perl 6 in Context

short circuit XOR

doit() ^^ doelse();

Page 132: Perl 6 in Context

eXclusive OR

doit() ^^ doelse();

my($l, $r)=(doit(), doelse());if not $l { $r }else { $r ?? Nil !! $l }

Page 133: Perl 6 in Context

No else with unless

doit() ^^ doelse();

my($l, $r)=(doit(), doelse());if not $l { $r }else { $r ?? Nil !! $l }

Page 134: Perl 6 in Context

All Shortcuts

this() || that();this() // that();

this() && that();this() ^^ that();

Page 135: Perl 6 in Context

Boundary Values

$a min $b$a max $b

$a minmax $b

Page 136: Perl 6 in Context

Boundary Values

$a min $b$a max $b

minmax @a

Page 137: Perl 6 in Context

Flipflop

begin() ff end();begin() fff end();

Page 138: Perl 6 in Context

Was .. | … in $ contxt

while … { run() if begin() ff end(); run() if begin() fff end();

}

Page 139: Perl 6 in Context

Skoro u Cile

? !?^ ?| ?& ^ | &

// ^^ || && ff fff?? !!

Page 140: Perl 6 in Context

Ternärer Op

?? !!

Page 141: Perl 6 in Context

Ternary Op

was ? :

?? !!

Page 142: Perl 6 in Context

Ternary Op

was ? :eval in Bool context

?? !!

Page 143: Perl 6 in Context

Ternary Op

was ? :eval in Bool contextvalues unchanged

?? !!

Page 144: Perl 6 in Context

All Clear Now ?

? !?^ ?| ?& ^ | &

// ^^ || && ff fff?? !!

Page 145: Perl 6 in Context

Numeric Kontext

+ - * / % %% **+^ +| +& +< +>

Page 146: Perl 6 in Context

Everybody knows:

+ - * / % %% **+^ +| +& +< +>

Page 147: Perl 6 in Context

Division

7 / 3

7/3(2.333) | 2

Page 148: Perl 6 in Context

Modulo

7 % 3

Page 149: Perl 6 in Context

Modulo

7 % 3

7 = 3 * 2 + 1

Page 150: Perl 6 in Context

ModMod?

7 %% 3

Page 151: Perl 6 in Context

Indivisible

7 %% 3

False => remainder 1

Page 152: Perl 6 in Context

Numeric Context

+ - * / % %% **+^ +| +& +< +>

Page 153: Perl 6 in Context

Bit Logic

+^ +| +&

Page 154: Perl 6 in Context

Bit Logic

(was:) ^ | &+^ +| +&

Page 155: Perl 6 in Context

Bit - Shift

+< +>

Page 156: Perl 6 in Context

Bit - Shift

(was:) << >> +< +>

Page 157: Perl 6 in Context

Numeric Context

+ - * / % %% **+^ +| +& +< +>

Page 158: Perl 6 in Context

Someth. Forgotten?

Page 159: Perl 6 in Context

Someth. Forgotten?

++--

Page 160: Perl 6 in Context

Ordered Sets

++ after - - before cmp

Page 161: Perl 6 in Context

Ordered Sets

cmp:Less, Same, More

Page 162: Perl 6 in Context

Ordered Sets

cmp:Less, Same, More

-1, 0, 1

Page 163: Perl 6 in Context

Still in Context

<=>legcmp

Page 164: Perl 6 in Context

Compare in Context

<=> Num Context leg Str Context

cmp elsewhere

Page 165: Perl 6 in Context

Compare in Context

< Num Context lt Str Context before elsewhere

Page 166: Perl 6 in Context

Compare in Context

> Num Context gt Str Context

after elsewhere

Page 167: Perl 6 in Context

Ordered Sets

++ 1 after - - 1 before

Page 168: Perl 6 in Context

Equality in Context

== Num Context eq Str Context

=== Id. (typ & val)

Page 169: Perl 6 in Context

Equality in Context

== Num Context eq Str Context

eqv everywhere

Page 170: Perl 6 in Context

Equality in Context

== Num Context =:= binding eqv dynamic

Page 171: Perl 6 in Context

Dynamic in Context

if 2 eqv 2.0 {

Page 172: Perl 6 in Context

Data Type => Content

if 2 eqv 2.0 {Int() vs. Rat()

Page 173: Perl 6 in Context

Data Type => Content

if 2 == 2.0 {

Page 174: Perl 6 in Context

Data Type => Content

if 2 == 2.0 {

True (Num Kontext)

Page 175: Perl 6 in Context

Numeric Context

+ - * / % %% **+^ +| +& +< +>

Page 176: Perl 6 in Context

String Context

~~^ ~| ~&

~~ x

Page 177: Perl 6 in Context

Perlish to_string

~

Page 178: Perl 6 in Context

Was Once .

~

say 'combine' ~ 'Watson';

Page 179: Perl 6 in Context

String Context

~~^ ~| ~&

~~ x

Page 180: Perl 6 in Context

Letter Logic

~^ ~| ~&

Page 181: Perl 6 in Context

Letter Logic

1 +| 2 = 3

'a' ~| 'b' = 'c'

Page 182: Perl 6 in Context

String Context

~~^ ~| ~&

~~ x

Page 183: Perl 6 in Context

String Context

~~^ ~| ~&

~~ x

Page 184: Perl 6 in Context

Anyone Knows

say '-' x 20;

Page 185: Perl 6 in Context

Multiply Strings

say '-' x 20;

'--------------------'

Page 186: Perl 6 in Context

String Context

~~^ ~| ~&

~~ x

Page 187: Perl 6 in Context

List Context

, … xx X Z<<== <== ==> ==>>

Page 188: Perl 6 in Context

Comma Operator

@fib = 1, 1, 2, 3, 5;

Page 189: Perl 6 in Context

Same As:

$fib = (1, 1, 2, 3, 5);

Page 190: Perl 6 in Context

Comma Operator

$fib = (1);say $fib.WHAT;

Int

Page 191: Perl 6 in Context

Comma Operator

$fib = (1 ,);say $fib.WHAT;

Page 192: Perl 6 in Context

Comma Operator

$fib = (1 ,);say $fib.WHAT;

Parcel

Page 193: Perl 6 in Context

Comma Operator

$fib = (1 ,);say $fib.WHAT;

List of Parameter

Page 194: Perl 6 in Context

Capture Context

| named parameter|| positional parameter

Page 195: Perl 6 in Context

List Context

, … xx X Z<<== <== ==> ==>>

Page 196: Perl 6 in Context

Sequence Operator

$d = 1, 2 … 9;

Page 197: Perl 6 in Context

Yadda Operator

sub planned { … }

Page 198: Perl 6 in Context

Yadda Operator

sub planned { … }sub planned { ??? }sub planned { !!! }

Page 199: Perl 6 in Context

Sequence Operator

$d = 0, 1 … 9;

Page 200: Perl 6 in Context

Sequence op can!

$d = 9, 8 … 0;

Page 201: Perl 6 in Context

Range Op can't!

$d = 9 .. 0;

Page 202: Perl 6 in Context

Range Op can't!

$d = reverse 0 .. 9;

Page 203: Perl 6 in Context

Sequence op can.

$d = 9, 8 … 0;

Page 204: Perl 6 in Context

Sequence Operator

$zp = 1, 2, 4… 256;

Page 205: Perl 6 in Context

Sequence Operator

$fib = 1, 1, *+* … *;

Page 206: Perl 6 in Context

Forgot something?

$d = 0 .. 9;

Page 207: Perl 6 in Context

Forgot something ?

say 0 .. 9;

Page 208: Perl 6 in Context

No List ?

say 0 .. 9;

0..9

Page 209: Perl 6 in Context

Depends On Context

say (0 .. 9);

Page 210: Perl 6 in Context

braces -> precedence

say (0 .. 9);

0..9

Page 211: Perl 6 in Context

What is it ?

say (0 .. 9);

Page 212: Perl 6 in Context

What is it ?

say (0 .. 9).WHAT;

Page 213: Perl 6 in Context

Range ???

say (0 .. 9).WHAT;

Range

Page 214: Perl 6 in Context

Range ???

say (0 .. 9).WHAT;

Obj with 2 values

Page 215: Perl 6 in Context

Range ???

say 5 ~~ 0 .. 9;

True

Page 216: Perl 6 in Context

How you create Lists

say @(0..9).WHAT;

List

Page 217: Perl 6 in Context

List - Output?

say @(0 .. 9);

0 1 2 3 4 5 6 7 8 9

Page 218: Perl 6 in Context

for - ces List context

say $_ for 0 .. 9;

0 1 2 3 4 5 6 7 8 9

Page 219: Perl 6 in Context

real perlheads do:

say for 0 .. 9;

Page 220: Perl 6 in Context

real perl5heads do:

say for 0 .. 9;

Page 221: Perl 6 in Context

Perl 6 heads:

.say for 0 .. 9;

0 1 2 3 4 5 6 7 8 9

Page 222: Perl 6 in Context

List Context

, … xx X Z<<== <== ==> ==>>

Page 223: Perl 6 in Context

Play with Lists

xx X Z

Page 224: Perl 6 in Context

xx Operator

Page 225: Perl 6 in Context

xx Operator

say 'eins zwo eins zwo';

Page 226: Perl 6 in Context

xx Operator

say 'eins zwo eins zwo';say q:words(eins zwo) xx 2;

Page 227: Perl 6 in Context

xx Operator

say 'eins zwo eins zwo';say q:words(eins zwo) xx 2;say q:w(eins zwo) xx 2;

Page 228: Perl 6 in Context

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;

Page 229: Perl 6 in Context

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;

Page 230: Perl 6 in Context

X Operator

say <eins zwo> X<dan rabauke>;

Page 231: Perl 6 in Context

Cartesian Product

say <eins zwo> X<dan rabauke>;

eins dan eins rabaukezwo dan zwo rabauke

Page 232: Perl 6 in Context

Its pairs in real:

say <eins zwo> X<dan rabauke>;

('eins','dan'),('eins','rabauke'),('zwo','dan'),('zwo','rabauke')

Page 233: Perl 6 in Context

Its pairs in real:

say elems(<1 2>X<3 4>);

4

Page 234: Perl 6 in Context

Z Operator

say <eins zwo> Z<dan rabauke>;

Page 235: Perl 6 in Context

Zip

say <eins zwo> Z<dan rabauke>;

eins dan zwo rabauke

Page 236: Perl 6 in Context

Zip

say <eins zwo> zip<dan rabauke>;

eins dan zwo rabauke

Page 237: Perl 6 in Context

Zip as a Op

for @li Z @re -> $l, $r {

Page 238: Perl 6 in Context

read write var

for @li Z @re <-> $l,$r {

Page 239: Perl 6 in Context

List Context

, xx X Z<<== <== ==> ==>>

Page 240: Perl 6 in Context

Schwartz Transform

my @output = map { $_->[0] } sort { $a->[1] cmp $b->[1] } map { [$_,expensive_func($_)] } @input;

Page 241: Perl 6 in Context

Pipe Operator

my @output <== map { $_[0] } <== sort { $^a[1] cmp $^b[1] } <== map { [$_, expensive_fun($_)] } <== @input;

Page 242: Perl 6 in Context

Other Direction

@input ==> map { [$_,expensive_fun($_)] } ==> sort { $^a[1] cmp $^b[1] } ==> map { $_[0] } ==> my @output;

Page 243: Perl 6 in Context

Append Mode

my @output <<== map { $_[0] } <<== sort { $^a[1] cmp $^b[1] } <<== map { [$_,expensive_fun($_)] } <<== @input;

Page 244: Perl 6 in Context

Pointy Sub

for @input -> $i { ...

Page 245: Perl 6 in Context

List Context

, xx X Z<<== <== ==> ==>>

Page 246: Perl 6 in Context

Meta Ops

= !X Z R S

[] [\]<< >>

Page 247: Perl 6 in Context

Meta Op =

@sum += 3;

Page 248: Perl 6 in Context

Meta Op !

if $age !< 18 {

Page 249: Perl 6 in Context

Meta Op !

if $age !< 18 {

# real P6 code

Page 250: Perl 6 in Context

Meta Op R

$age = 2 R- 18;

# == 16

Page 251: Perl 6 in Context

Meta Op S

$age = 2 S- 18;

# == -16

Page 252: Perl 6 in Context

Meta Op S

$age = 2 S- 18;

# actually error

Page 253: Perl 6 in Context

Meta Op S

$age = 2 S- 18;

# don't parallel !!!

Page 254: Perl 6 in Context

Meta Op S

$age = 2 S- 18;

# later important

Page 255: Perl 6 in Context

Meta Ops

= !X Z R S

[] [\]<< >>

Page 256: Perl 6 in Context

Meta Op X

Page 257: Perl 6 in Context

Let's Remember

say <1 2> X <a b>

1 a 1 b 2 a 2 b

Page 258: Perl 6 in Context

Let's Remember

<1 2> X <a b>

<1 a>,<1 b>,<2 a>,<2 b>

Page 259: Perl 6 in Context

Cartesian Product

<1 2> X <a b>

('1','a'),('1','b'),('2','a'),('2','b')

Page 260: Perl 6 in Context

Cartesian Pairs

<1 2> X~ <a b>

'1a','1b','2a','2b'

Page 261: Perl 6 in Context

no num out of 'a'

<1 2> X+ <a b>

Stacktrace

Page 262: Perl 6 in Context

Cartesian Pairs

<1 2> X* <3 4>

Page 263: Perl 6 in Context

Cartesian Pairs

<1 2> X* <3 4>

3, 4, 6, 8

Page 264: Perl 6 in Context

Meta Op Z

# guess what ?

Page 265: Perl 6 in Context

Metaop Z

<1 2> Z~ <3 4>

Page 266: Perl 6 in Context

Metaop Z

<1 2> Z~ <3 4>

'13','24'

Page 267: Perl 6 in Context

Metaop Z

<1 2> Z* <3 4>

3, 8

Page 268: Perl 6 in Context

Metaop Z

(<1 2>;<3 4>).zipwith(&[*])

<1 2> Z* <3 4>

Page 269: Perl 6 in Context

Metaop

(<1 2>;<3 4>).zip()

<1 2> Z <3 4>

Page 270: Perl 6 in Context

Metaop

(<1 2>;<3 4>).cross()

<1 2> X <3 4>

Page 271: Perl 6 in Context

Metaop

(<1 2>;<3 4>).crosswith(&[*])

<1 2> X* <3 4>

Page 272: Perl 6 in Context

Meta Ops

= !X Z R S

[] [\]<< >>

Page 273: Perl 6 in Context

Meta Op []

Page 274: Perl 6 in Context

Do it like Gauss

(1..100).reduce(&[+])

Page 275: Perl 6 in Context

Forces List Context

(1..100).reduce(&[+])

[+] 1 .. 100

Page 276: Perl 6 in Context

Forces List Context

True

[<] 1 .. 100

Page 277: Perl 6 in Context

Any Clue?

(1..100).triangle(&[+])

[\+] 1 .. 100

Page 278: Perl 6 in Context

What's that ?

1, 3, 6

[\+] 1 .. 3

Page 279: Perl 6 in Context

What's that ?

1=1, 1+2=3, 1+2+3=6

[\+] 1 .. 3

Page 280: Perl 6 in Context

Hyper Op <<

Page 281: Perl 6 in Context

Birthday !!!

@age >>++;

Page 282: Perl 6 in Context

Birthday !!!

@age >>+=>> 1;

Page 283: Perl 6 in Context

all get older

@age == 18, 22, 35;

@age = @age >>+>> 1;

@age == 19, 23, 36;

Page 284: Perl 6 in Context

only one gets older

@age == 18, 22, 35;

@age = @age <<+<< 1;

@age == 19;

Page 285: Perl 6 in Context

interesting cases

<18, 22, 35> >>+<< <1, 2>

<18, 22, 35> <<+>> <1, 2>

Page 286: Perl 6 in Context

interesting cases

<18, 22, 35> >>+<< <1, 2>ERROR

<18, 22, 35> <<+>> <1, 2>19, 24, 36

Page 287: Perl 6 in Context

complexity ++

~~not today

Page 288: Perl 6 in Context

Thank You !!!

vv