📜 ⬆️ ⬇️

Metaperators X and Z in Perl 6

One of the new ideas in Perl 6 is a meta-operator. This is an operator that can be combined with a regular operator by changing its behavior. There are a few such meta-operators, but in this article we will only look at X and Z.

You could see the operator X as an infix combination. He combines lists, by element from each, in all possible combinations:

> say ((1, 2) X ('a', 'b')).perl ((1, "a"), (1, "b"), (2, "a"), (2, "b")) 

')
However, the infix: - X, infix:<,> . , :

> say ((1, 2) X, (10, 11)).perl ((1, 10), (1, 11), (2, 10), (2, 11))

, ? , infix:<+>

> say ((1, 2) X+ (10, 11)).perl (11, 12, 12, 13)

, . , – .

. infix:<~>

> say ((1, 2) X~ (10, 11)).perl ("110", "111", "210", "211")

infix:<==>

> say ((1, 2) X== (1, 1)).perl (Bool::True, Bool::True, Bool::False, Bool::False)

Z. infix:, "Z,", , . Haskell infix: zip-, Z – zipWith.

> say ((1, 2) Z, (3, 4)).perl ((1, 3), (2, 4)) > say ((1, 2) Z+ (3, 4)).perl (4, 6) > say ((1, 2) Z== (1, 1)).perl (Bool::True, Bool::False)


Z, , , , , .. , , , .

Z – , , , . X .

, , Z, , X.

? .

my %hash = @keys Z=> @values;

:

for @a Z @b -> $a, $b { ... }

?

for @a Z @b Z @c -> $a, $b, $c { ... }

, :

my @d10 = 1 ... 10; my @scores = (@d10 X+ @d10) X+ @d10;

, , .
record infix: - X, infix:<,> . , :

> say ((1, 2) X, (10, 11)).perl ((1, 10), (1, 11), (2, 10), (2, 11))

, ? , infix:<+>

> say ((1, 2) X+ (10, 11)).perl (11, 12, 12, 13)

, . , – .

. infix:<~>

> say ((1, 2) X~ (10, 11)).perl ("110", "111", "210", "211")

infix:<==>

> say ((1, 2) X== (1, 1)).perl (Bool::True, Bool::True, Bool::False, Bool::False)

Z. infix:, "Z,", , . Haskell infix: zip-, Z – zipWith.

> say ((1, 2) Z, (3, 4)).perl ((1, 3), (2, 4)) > say ((1, 2) Z+ (3, 4)).perl (4, 6) > say ((1, 2) Z== (1, 1)).perl (Bool::True, Bool::False)


Z, , , , , .. , , , .

Z – , , , . X .

, , Z, , X.

? .

my %hash = @keys Z=> @values;

:

for @a Z @b -> $a, $b { ... }

?

for @a Z @b Z @c -> $a, $b, $c { ... }

, :

my @d10 = 1 ... 10; my @scores = (@d10 X+ @d10) X+ @d10;

, , .
infix: - X, infix:<,> . , :

> say ((1, 2) X, (10, 11)).perl ((1, 10), (1, 11), (2, 10), (2, 11))

, ? , infix:<+>

> say ((1, 2) X+ (10, 11)).perl (11, 12, 12, 13)

, . , – .

. infix:<~>

> say ((1, 2) X~ (10, 11)).perl ("110", "111", "210", "211")

infix:<==>

> say ((1, 2) X== (1, 1)).perl (Bool::True, Bool::True, Bool::False, Bool::False)

Z. infix:, "Z,", , . Haskell infix: zip-, Z – zipWith.

> say ((1, 2) Z, (3, 4)).perl ((1, 3), (2, 4)) > say ((1, 2) Z+ (3, 4)).perl (4, 6) > say ((1, 2) Z== (1, 1)).perl (Bool::True, Bool::False)


Z, , , , , .. , , , .

Z – , , , . X .

, , Z, , X.

? .

my %hash = @keys Z=> @values;

:

for @a Z @b -> $a, $b { ... }

?

for @a Z @b Z @c -> $a, $b, $c { ... }

, :

my @d10 = 1 ... 10; my @scores = (@d10 X+ @d10) X+ @d10;

, , .
 infix: -     X,     infix:<,> .  ,  : 

> say ((1, 2) X, (10, 11)).perl ((1, 10), (1, 11), (2, 10), (2, 11))

, ? , infix:<+>

> say ((1, 2) X+ (10, 11)).perl (11, 12, 12, 13)

, . , – .

. infix:<~>

> say ((1, 2) X~ (10, 11)).perl ("110", "111", "210", "211")

infix:<==>

> say ((1, 2) X== (1, 1)).perl (Bool::True, Bool::True, Bool::False, Bool::False)

Z. infix:, "Z,", , . Haskell infix: zip-, Z – zipWith.

> say ((1, 2) Z, (3, 4)).perl ((1, 3), (2, 4)) > say ((1, 2) Z+ (3, 4)).perl (4, 6) > say ((1, 2) Z== (1, 1)).perl (Bool::True, Bool::False)


Z, , , , , .. , , , .

Z – , , , . X .

, , Z, , X.

? .

my %hash = @keys Z=> @values;

:

for @a Z @b -> $a, $b { ... }

?

for @a Z @b Z @c -> $a, $b, $c { ... }

, :

my @d10 = 1 ... 10; my @scores = (@d10 X+ @d10) X+ @d10;

, , .
infix: - X, infix:<,> . , :

> say ((1, 2) X, (10, 11)).perl ((1, 10), (1, 11), (2, 10), (2, 11))

, ? , infix:<+>

> say ((1, 2) X+ (10, 11)).perl (11, 12, 12, 13)

, . , – .

. infix:<~>

> say ((1, 2) X~ (10, 11)).perl ("110", "111", "210", "211")

infix:<==>

> say ((1, 2) X== (1, 1)).perl (Bool::True, Bool::True, Bool::False, Bool::False)

Z. infix:, "Z,", , . Haskell infix: zip-, Z – zipWith.

> say ((1, 2) Z, (3, 4)).perl ((1, 3), (2, 4)) > say ((1, 2) Z+ (3, 4)).perl (4, 6) > say ((1, 2) Z== (1, 1)).perl (Bool::True, Bool::False)


Z, , , , , .. , , , .

Z – , , , . X .

, , Z, , X.

? .

my %hash = @keys Z=> @values;

:

for @a Z @b -> $a, $b { ... }

?

for @a Z @b Z @c -> $a, $b, $c { ... }

, :

my @d10 = 1 ... 10; my @scores = (@d10 X+ @d10) X+ @d10;

, , .
 infix: -     X,     infix:<,> .  ,  : 

> say ((1, 2) X, (10, 11)).perl ((1, 10), (1, 11), (2, 10), (2, 11))

, ? , infix:<+>

> say ((1, 2) X+ (10, 11)).perl (11, 12, 12, 13)

, . , – .

. infix:<~>

> say ((1, 2) X~ (10, 11)).perl ("110", "111", "210", "211")

infix:<==>

> say ((1, 2) X== (1, 1)).perl (Bool::True, Bool::True, Bool::False, Bool::False)

Z. infix:, "Z,", , . Haskell infix: zip-, Z – zipWith.

> say ((1, 2) Z, (3, 4)).perl ((1, 3), (2, 4)) > say ((1, 2) Z+ (3, 4)).perl (4, 6) > say ((1, 2) Z== (1, 1)).perl (Bool::True, Bool::False)


Z, , , , , .. , , , .

Z – , , , . X .

, , Z, , X.

? .

my %hash = @keys Z=> @values;

:

for @a Z @b -> $a, $b { ... }

?

for @a Z @b Z @c -> $a, $b, $c { ... }

, :

my @d10 = 1 ... 10; my @scores = (@d10 X+ @d10) X+ @d10;

, , .
infix: - X, infix:<,> . , :

> say ((1, 2) X, (10, 11)).perl ((1, 10), (1, 11), (2, 10), (2, 11))

, ? , infix:<+>

> say ((1, 2) X+ (10, 11)).perl (11, 12, 12, 13)

, . , – .

. infix:<~>

> say ((1, 2) X~ (10, 11)).perl ("110", "111", "210", "211")

infix:<==>

> say ((1, 2) X== (1, 1)).perl (Bool::True, Bool::True, Bool::False, Bool::False)

Z. infix:, "Z,", , . Haskell infix: zip-, Z – zipWith.

> say ((1, 2) Z, (3, 4)).perl ((1, 3), (2, 4)) > say ((1, 2) Z+ (3, 4)).perl (4, 6) > say ((1, 2) Z== (1, 1)).perl (Bool::True, Bool::False)


Z, , , , , .. , , , .

Z – , , , . X .

, , Z, , X.

? .

my %hash = @keys Z=> @values;

:

for @a Z @b -> $a, $b { ... }

?

for @a Z @b Z @c -> $a, $b, $c { ... }

, :

my @d10 = 1 ... 10; my @scores = (@d10 X+ @d10) X+ @d10;

, , .
 infix: -     X,     infix:<,> .  ,  : 

> say ((1, 2) X, (10, 11)).perl ((1, 10), (1, 11), (2, 10), (2, 11))

, ? , infix:<+>

> say ((1, 2) X+ (10, 11)).perl (11, 12, 12, 13)

, . , – .

. infix:<~>

> say ((1, 2) X~ (10, 11)).perl ("110", "111", "210", "211")

infix:<==>

> say ((1, 2) X== (1, 1)).perl (Bool::True, Bool::True, Bool::False, Bool::False)

Z. infix:, "Z,", , . Haskell infix: zip-, Z – zipWith.

> say ((1, 2) Z, (3, 4)).perl ((1, 3), (2, 4)) > say ((1, 2) Z+ (3, 4)).perl (4, 6) > say ((1, 2) Z== (1, 1)).perl (Bool::True, Bool::False)


Z, , , , , .. , , , .

Z – , , , . X .

, , Z, , X.

? .

my %hash = @keys Z=> @values;

:

for @a Z @b -> $a, $b { ... }

?

for @a Z @b Z @c -> $a, $b, $c { ... }

, :

my @d10 = 1 ... 10; my @scores = (@d10 X+ @d10) X+ @d10;

, , .
infix: - X, infix:<,> . , :

> say ((1, 2) X, (10, 11)).perl ((1, 10), (1, 11), (2, 10), (2, 11))

, ? , infix:<+>

> say ((1, 2) X+ (10, 11)).perl (11, 12, 12, 13)

, . , – .

. infix:<~>

> say ((1, 2) X~ (10, 11)).perl ("110", "111", "210", "211")

infix:<==>

> say ((1, 2) X== (1, 1)).perl (Bool::True, Bool::True, Bool::False, Bool::False)

Z. infix:, "Z,", , . Haskell infix: zip-, Z – zipWith.

> say ((1, 2) Z, (3, 4)).perl ((1, 3), (2, 4)) > say ((1, 2) Z+ (3, 4)).perl (4, 6) > say ((1, 2) Z== (1, 1)).perl (Bool::True, Bool::False)


Z, , , , , .. , , , .

Z – , , , . X .

, , Z, , X.

? .

my %hash = @keys Z=> @values;

:

for @a Z @b -> $a, $b { ... }

?

for @a Z @b Z @c -> $a, $b, $c { ... }

, :

my @d10 = 1 ... 10; my @scores = (@d10 X+ @d10) X+ @d10;

, , .
 infix: -     X,     infix:<,> .  ,  : 

> say ((1, 2) X, (10, 11)).perl ((1, 10), (1, 11), (2, 10), (2, 11))

, ? , infix:<+>

> say ((1, 2) X+ (10, 11)).perl (11, 12, 12, 13)

, . , – .

. infix:<~>

> say ((1, 2) X~ (10, 11)).perl ("110", "111", "210", "211")

infix:<==>

> say ((1, 2) X== (1, 1)).perl (Bool::True, Bool::True, Bool::False, Bool::False)

Z. infix:, "Z,", , . Haskell infix: zip-, Z – zipWith.

> say ((1, 2) Z, (3, 4)).perl ((1, 3), (2, 4)) > say ((1, 2) Z+ (3, 4)).perl (4, 6) > say ((1, 2) Z== (1, 1)).perl (Bool::True, Bool::False)


Z, , , , , .. , , , .

Z – , , , . X .

, , Z, , X.

? .

my %hash = @keys Z=> @values;

:

for @a Z @b -> $a, $b { ... }

?

for @a Z @b Z @c -> $a, $b, $c { ... }

, :

my @d10 = 1 ... 10; my @scores = (@d10 X+ @d10) X+ @d10;

, , .
infix: - X, infix:<,> . , :

> say ((1, 2) X, (10, 11)).perl ((1, 10), (1, 11), (2, 10), (2, 11))

, ? , infix:<+>

> say ((1, 2) X+ (10, 11)).perl (11, 12, 12, 13)

, . , – .

. infix:<~>

> say ((1, 2) X~ (10, 11)).perl ("110", "111", "210", "211")

infix:<==>

> say ((1, 2) X== (1, 1)).perl (Bool::True, Bool::True, Bool::False, Bool::False)

Z. infix:, "Z,", , . Haskell infix: zip-, Z – zipWith.

> say ((1, 2) Z, (3, 4)).perl ((1, 3), (2, 4)) > say ((1, 2) Z+ (3, 4)).perl (4, 6) > say ((1, 2) Z== (1, 1)).perl (Bool::True, Bool::False)


Z, , , , , .. , , , .

Z – , , , . X .

, , Z, , X.

? .

my %hash = @keys Z=> @values;

:

for @a Z @b -> $a, $b { ... }

?

for @a Z @b Z @c -> $a, $b, $c { ... }

, :

my @d10 = 1 ... 10; my @scores = (@d10 X+ @d10) X+ @d10;

, , .
 infix: -     X,     infix:<,> .  ,  : 

> say ((1, 2) X, (10, 11)).perl ((1, 10), (1, 11), (2, 10), (2, 11))

, ? , infix:<+>

> say ((1, 2) X+ (10, 11)).perl (11, 12, 12, 13)

, . , – .

. infix:<~>

> say ((1, 2) X~ (10, 11)).perl ("110", "111", "210", "211")

infix:<==>

> say ((1, 2) X== (1, 1)).perl (Bool::True, Bool::True, Bool::False, Bool::False)

Z. infix:, "Z,", , . Haskell infix: zip-, Z – zipWith.

> say ((1, 2) Z, (3, 4)).perl ((1, 3), (2, 4)) > say ((1, 2) Z+ (3, 4)).perl (4, 6) > say ((1, 2) Z== (1, 1)).perl (Bool::True, Bool::False)


Z, , , , , .. , , , .

Z – , , , . X .

, , Z, , X.

? .

my %hash = @keys Z=> @values;

:

for @a Z @b -> $a, $b { ... }

?

for @a Z @b Z @c -> $a, $b, $c { ... }

, :

my @d10 = 1 ... 10; my @scores = (@d10 X+ @d10) X+ @d10;

, , .
infix: - X, infix:<,> . , :

> say ((1, 2) X, (10, 11)).perl ((1, 10), (1, 11), (2, 10), (2, 11))

, ? , infix:<+>

> say ((1, 2) X+ (10, 11)).perl (11, 12, 12, 13)

, . , – .

. infix:<~>

> say ((1, 2) X~ (10, 11)).perl ("110", "111", "210", "211")

infix:<==>

> say ((1, 2) X== (1, 1)).perl (Bool::True, Bool::True, Bool::False, Bool::False)

Z. infix:, "Z,", , . Haskell infix: zip-, Z – zipWith.

> say ((1, 2) Z, (3, 4)).perl ((1, 3), (2, 4)) > say ((1, 2) Z+ (3, 4)).perl (4, 6) > say ((1, 2) Z== (1, 1)).perl (Bool::True, Bool::False)


Z, , , , , .. , , , .

Z – , , , . X .

, , Z, , X.

? .

my %hash = @keys Z=> @values;

:

for @a Z @b -> $a, $b { ... }

?

for @a Z @b Z @c -> $a, $b, $c { ... }

, :

my @d10 = 1 ... 10; my @scores = (@d10 X+ @d10) X+ @d10;

, , .
 infix: -     X,     infix:<,> .  ,  : 

> say ((1, 2) X, (10, 11)).perl ((1, 10), (1, 11), (2, 10), (2, 11))

, ? , infix:<+>

> say ((1, 2) X+ (10, 11)).perl (11, 12, 12, 13)

, . , – .

. infix:<~>

> say ((1, 2) X~ (10, 11)).perl ("110", "111", "210", "211")

infix:<==>

> say ((1, 2) X== (1, 1)).perl (Bool::True, Bool::True, Bool::False, Bool::False)

Z. infix:, "Z,", , . Haskell infix: zip-, Z – zipWith.

> say ((1, 2) Z, (3, 4)).perl ((1, 3), (2, 4)) > say ((1, 2) Z+ (3, 4)).perl (4, 6) > say ((1, 2) Z== (1, 1)).perl (Bool::True, Bool::False)


Z, , , , , .. , , , .

Z – , , , . X .

, , Z, , X.

? .

my %hash = @keys Z=> @values;

:

for @a Z @b -> $a, $b { ... }

?

for @a Z @b Z @c -> $a, $b, $c { ... }

, :

my @d10 = 1 ... 10; my @scores = (@d10 X+ @d10) X+ @d10;

, , .
infix: - X, infix:<,> . , :

> say ((1, 2) X, (10, 11)).perl ((1, 10), (1, 11), (2, 10), (2, 11))

, ? , infix:<+>

> say ((1, 2) X+ (10, 11)).perl (11, 12, 12, 13)

, . , – .

. infix:<~>

> say ((1, 2) X~ (10, 11)).perl ("110", "111", "210", "211")

infix:<==>

> say ((1, 2) X== (1, 1)).perl (Bool::True, Bool::True, Bool::False, Bool::False)

Z. infix:, "Z,", , . Haskell infix: zip-, Z – zipWith.

> say ((1, 2) Z, (3, 4)).perl ((1, 3), (2, 4)) > say ((1, 2) Z+ (3, 4)).perl (4, 6) > say ((1, 2) Z== (1, 1)).perl (Bool::True, Bool::False)


Z, , , , , .. , , , .

Z – , , , . X .

, , Z, , X.

? .

my %hash = @keys Z=> @values;

:

for @a Z @b -> $a, $b { ... }

?

for @a Z @b Z @c -> $a, $b, $c { ... }

, :

my @d10 = 1 ... 10; my @scores = (@d10 X+ @d10) X+ @d10;

, , .
 infix: -     X,     infix:<,> .  ,  : 

> say ((1, 2) X, (10, 11)).perl ((1, 10), (1, 11), (2, 10), (2, 11))

, ? , infix:<+>

> say ((1, 2) X+ (10, 11)).perl (11, 12, 12, 13)

, . , – .

. infix:<~>

> say ((1, 2) X~ (10, 11)).perl ("110", "111", "210", "211")

infix:<==>

> say ((1, 2) X== (1, 1)).perl (Bool::True, Bool::True, Bool::False, Bool::False)

Z. infix:, "Z,", , . Haskell infix: zip-, Z – zipWith.

> say ((1, 2) Z, (3, 4)).perl ((1, 3), (2, 4)) > say ((1, 2) Z+ (3, 4)).perl (4, 6) > say ((1, 2) Z== (1, 1)).perl (Bool::True, Bool::False)


Z, , , , , .. , , , .

Z – , , , . X .

, , Z, , X.

? .

my %hash = @keys Z=> @values;

:

for @a Z @b -> $a, $b { ... }

?

for @a Z @b Z @c -> $a, $b, $c { ... }

, :

my @d10 = 1 ... 10; my @scores = (@d10 X+ @d10) X+ @d10;

, , .
infix: - X, infix:<,> . , :

> say ((1, 2) X, (10, 11)).perl ((1, 10), (1, 11), (2, 10), (2, 11))

, ? , infix:<+>

> say ((1, 2) X+ (10, 11)).perl (11, 12, 12, 13)

, . , – .

. infix:<~>

> say ((1, 2) X~ (10, 11)).perl ("110", "111", "210", "211")

infix:<==>

> say ((1, 2) X== (1, 1)).perl (Bool::True, Bool::True, Bool::False, Bool::False)

Z. infix:, "Z,", , . Haskell infix: zip-, Z – zipWith.

> say ((1, 2) Z, (3, 4)).perl ((1, 3), (2, 4)) > say ((1, 2) Z+ (3, 4)).perl (4, 6) > say ((1, 2) Z== (1, 1)).perl (Bool::True, Bool::False)


Z, , , , , .. , , , .

Z – , , , . X .

, , Z, , X.

? .

my %hash = @keys Z=> @values;

:

for @a Z @b -> $a, $b { ... }

?

for @a Z @b Z @c -> $a, $b, $c { ... }

, :

my @d10 = 1 ... 10; my @scores = (@d10 X+ @d10) X+ @d10;

, , .
 infix: -     X,     infix:<,> .  ,  : 

> say ((1, 2) X, (10, 11)).perl ((1, 10), (1, 11), (2, 10), (2, 11))

, ? , infix:<+>

> say ((1, 2) X+ (10, 11)).perl (11, 12, 12, 13)

, . , – .

. infix:<~>

> say ((1, 2) X~ (10, 11)).perl ("110", "111", "210", "211")

infix:<==>

> say ((1, 2) X== (1, 1)).perl (Bool::True, Bool::True, Bool::False, Bool::False)

Z. infix:, "Z,", , . Haskell infix: zip-, Z – zipWith.

> say ((1, 2) Z, (3, 4)).perl ((1, 3), (2, 4)) > say ((1, 2) Z+ (3, 4)).perl (4, 6) > say ((1, 2) Z== (1, 1)).perl (Bool::True, Bool::False)


Z, , , , , .. , , , .

Z – , , , . X .

, , Z, , X.

? .

my %hash = @keys Z=> @values;

:

for @a Z @b -> $a, $b { ... }

?

for @a Z @b Z @c -> $a, $b, $c { ... }

, :

my @d10 = 1 ... 10; my @scores = (@d10 X+ @d10) X+ @d10;

, , .
infix: - X, infix:<,> . , :

> say ((1, 2) X, (10, 11)).perl ((1, 10), (1, 11), (2, 10), (2, 11))

, ? , infix:<+>

> say ((1, 2) X+ (10, 11)).perl (11, 12, 12, 13)

, . , – .

. infix:<~>

> say ((1, 2) X~ (10, 11)).perl ("110", "111", "210", "211")

infix:<==>

> say ((1, 2) X== (1, 1)).perl (Bool::True, Bool::True, Bool::False, Bool::False)

Z. infix:, "Z,", , . Haskell infix: zip-, Z – zipWith.

> say ((1, 2) Z, (3, 4)).perl ((1, 3), (2, 4)) > say ((1, 2) Z+ (3, 4)).perl (4, 6) > say ((1, 2) Z== (1, 1)).perl (Bool::True, Bool::False)


Z, , , , , .. , , , .

Z – , , , . X .

, , Z, , X.

? .

my %hash = @keys Z=> @values;

:

for @a Z @b -> $a, $b { ... }

?

for @a Z @b Z @c -> $a, $b, $c { ... }

, :

my @d10 = 1 ... 10; my @scores = (@d10 X+ @d10) X+ @d10;

, , .
 infix: -     X,     infix:<,> .  ,  : 

> say ((1, 2) X, (10, 11)).perl ((1, 10), (1, 11), (2, 10), (2, 11))

, ? , infix:<+>

> say ((1, 2) X+ (10, 11)).perl (11, 12, 12, 13)

, . , – .

. infix:<~>

> say ((1, 2) X~ (10, 11)).perl ("110", "111", "210", "211")

infix:<==>

> say ((1, 2) X== (1, 1)).perl (Bool::True, Bool::True, Bool::False, Bool::False)

Z. infix:, "Z,", , . Haskell infix: zip-, Z – zipWith.

> say ((1, 2) Z, (3, 4)).perl ((1, 3), (2, 4)) > say ((1, 2) Z+ (3, 4)).perl (4, 6) > say ((1, 2) Z== (1, 1)).perl (Bool::True, Bool::False)


Z, , , , , .. , , , .

Z – , , , . X .

, , Z, , X.

? .

my %hash = @keys Z=> @values;

:

for @a Z @b -> $a, $b { ... }

?

for @a Z @b Z @c -> $a, $b, $c { ... }

, :

my @d10 = 1 ... 10; my @scores = (@d10 X+ @d10) X+ @d10;

, , .
infix: - X, infix:<,> . , :

> say ((1, 2) X, (10, 11)).perl ((1, 10), (1, 11), (2, 10), (2, 11))

, ? , infix:<+>

> say ((1, 2) X+ (10, 11)).perl (11, 12, 12, 13)

, . , – .

. infix:<~>

> say ((1, 2) X~ (10, 11)).perl ("110", "111", "210", "211")

infix:<==>

> say ((1, 2) X== (1, 1)).perl (Bool::True, Bool::True, Bool::False, Bool::False)

Z. infix:, "Z,", , . Haskell infix: zip-, Z – zipWith.

> say ((1, 2) Z, (3, 4)).perl ((1, 3), (2, 4)) > say ((1, 2) Z+ (3, 4)).perl (4, 6) > say ((1, 2) Z== (1, 1)).perl (Bool::True, Bool::False)


Z, , , , , .. , , , .

Z – , , , . X .

, , Z, , X.

? .

my %hash = @keys Z=> @values;

:

for @a Z @b -> $a, $b { ... }

?

for @a Z @b Z @c -> $a, $b, $c { ... }

, :

my @d10 = 1 ... 10; my @scores = (@d10 X+ @d10) X+ @d10;

, , .

Source: https://habr.com/ru/post/253077/


All Articles