f.f.o. :: /add

Александр Фенстер

add@fenster.name fenster.name

Все записи

[771] 11 апреля 2011; 19:10

Не очень слежу за процессом разработки Perl 6, но не могу не процитировать одну фразу отсюда:

But why call it err?
Well, the // operator looks like a skewed version of ||, so the low-precedence version should probably be a skewed version of or. We can't skew it visually (even Larry thought that using italics would be going a bit far), so we skew it phonetically instead: or -> err.

Дело в том, что сегодня я убил час на следующую проблему. При переносе на FreeBSD поломался небольшой перловый скрипт (не мой), в котором была объявлена функция err. Использовалась она до и после объявления, что вообще-то не является ошибкой в Perl, но только если ваш Perl 5.8.9 на FreeBSD не собран с патчем defined-or, который не только добавляет новый модный оператор //, но и определяет ему символьное имя, и имя это — err. В результате err ниже объявления функции понималось корректно, тогда как выше рассматривалось как оператор defined-or со всеми вытекающими последствиями.

Нет, ну ведь всё логично, да? &&and. ||or. Как назвать //? Да чего там думать, пусть будет err. Пускай люди помучаются.

Иногда меня действительно посещают сомнения в адекватности авторов этого любимого мною языка. А пост пишу в надежде, что когда-нибудь кто-нибудь будет пытаться починить похожую проблему, как, например, вот здесь, и сможет нагуглить вменяемое объяснение, не потратив на это много своего личного времени.