37. Обращающий метаоператор R в Perl 6

В Perl 6 есть метаоператор R, который меняет операнды у другого оператора. Как и другие метаоператоры, R модифицирует поведение одного из уже существующих операторов, как встроенных, так и определенных пользователем.

1

Проще всего начать с элементарного примера.

say 5 R- 3; # -2

Без R получилось бы 2, а с ним запись 5 R- 3 равносильна 3 - 5.

Еще один пример, с оператором %%, который сообщает, делимо ли одно число на другое.

say 3 R%% 10; # False
say 3 R%% 12; # True

2

Можно попробовать применить метаоператор в выражении с двумя и более операциями. Например:

say 10 R- 20 R- 40; # 10

Здесь в обоих случаях стоит оператор минус, так что в итоге мы получаем 40 - (20 - 10).

Подобные конструкции c R вполне можно завернуть в оператор редукции. Предыдущий пример более наглядно (если это слово здесь применимо) записывается так:

say [R-] 10, 20, 40; # 10

2 thoughts on “37. Обращающий метаоператор R в Perl 6

  1. После прочтения всех этих новшеств возникает ощущение, что в перл6 напихали всего по-максимум просто “потому что можем”. Никакого особого смысла в подобных операторах не видно, кроме того читаемость, за что вечно хаяли перл5, будет ещё хуже, всё это нагромождение “чудесных” операторов только повышает шанс не поставить лишний символ (~~ ~~~ .. … etc.), не заметить его при прочтении кода, а ещё ж и юникодные аналоги, ещё и свои операторы хитросимвольные и так далее, тем не менее перл6 скушает это всё и отработает, а если ещё принять во внимание, что у некоторых операций и операторов есть и внутренний “искусственный интеллект”, как у операции инкремента строк с именем файла внутри, то вообще что-то понять в реальной программе, написанной скиловым перл6виком, будет практически нереально, это будет мешанина (спец-)символов в разы массивнее, чем перл5. Конечно, timwtdi никто не отменял, но откровенно позволяя, развивая и поощряя все эти разные способы какого-то успеха вряд ли удасться добиться языку.

    Like

    1. Тестируйте свой код на любом языке, создавайте искусственные ошибки, смотрите как ваша программа будет работать и реагировать на эти ошибки.

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s