[Moscow.pm] Perl 6

Victor Efimov victor на vsespb.ru
Вт Окт 13 11:14:46 PDT 2015


13 октября 2015 г., 19:49 пользователь Olga Smirnova <
o.smirnova на corp.mail.ru> написал:

> Ни за ни против типизации, просто пример, когда строгая типизация могла бы
> решить проблему простым способом
>

Да, помогла бы, т.к. в JSON есть числа и boolean, а в perl их нет.


>
> Примерно вот такой кусок кода:
>
> use JSON qw(to_json);
> use Data::Dumper;
>
> my $numbers = {
>     one => 1.5,
>     two => 2,
> };
> my $str = to_json( $numbers );
> print $str . "\n\n";
>
> my $str2 = Dumper($numbers);
> my $str3 = to_json( $numbers );
>
> print $str3 . "\n\n";
>
> Получаем вот такой вывод:
>
> {"one":1.5,"two":2}
>
> {"one":"1.5","two":2}
>

Но кстати конкретно этот пример - это вообще другая тема, имхо, она за
гранью добра и зла. В Perl нет чисел, однако Марк Леманн думает что есть.
Это какие-то эфемерные "числа" которые не подпадают ни под какую-либо
вменяемую парадигму. С такими "числами" perl не консистентен.
Я заводил ему тикет вот https://rt.cpan.org/Public/Bug/Display.html?id=94451
и ещё недавно писал письмо про точно такую же проблему как вы описываете
(тоже числа после вывода в лог Dumper'ом или не Dumper'ом превращались в
строки). Я хотел опцию чтобы это отключить, но оба раза он меня посылал.


>
> Т.е. берем структуру с заведомыми чиселками, которую нужно преобразовать в
> json, затем применяем к ней какую-нибудь функцию, в данном случае Dumper, и
> теперь наша дробная чиселка легким движением руки превращается в строчечку
> при json-сериализации. Если бы была строгая типизация, то такой проблемы бы
> не возникло.
>
> Конкретно у нас это стало проблемой, когда понадобилось посылать внутри
> json'а сумму в рублях (соответственно, это дробная чиселка), а на
> принимающей стороне был сервис, написанный на скале (т.е. со строгой
> типизацей), валидатор которого ругался на наши "1.5" и говорил, мол это не
> чиселка.
>
> Тут, конечно, можно сказать, мол, просто не используйте Dumper (или любую
> другую функцию, неявно преобразующую тип), но это не панацея, т.к. в любой
> момент в проект может прийти новый человек, не знающий про эту фичу,
> который возьмет да и начнет использовать одну из таких функций перед
> отправкой и все нахрен поломается.
> В нашем случае решением проблемы стал перевод единицы измерения суммы из
> рублей в копейки и на нашей стороне и на принимающей (благо, принимающий
> сервис тоже наш), т.е. избавление от дробных чисел - перед отправкой для
> суммы всегда делался int и уже неважно было, что делали с этой чиселкой
> раньше.
>
> С другой сторону, в пользу не строгой типизации - если бы такой json (с
> "1.5") пришел в сервис, написанный на перле, то проблемы бы не было - мы бы
> адекватно распарсили и 1.5 и "1.5"
>
>
> 13.10.2015 19:08, Victor Efimov пишет:
>
> твой пример был про программиста, который написал $b='20' с кавычками, а
> потом решил с переменной $b произвести сложение. это не вменяемый
> программист, даже по реальностям Perl5. он присваивает переменной заведомо
> строковое значение прямо в исходном коде, зачем-то пишет кавычки, а затем
> эту же переменную пытается складывать. если у тебя какой-то xml парсер - то
> и приводи примеры xml парсера. я за то чтобы избавиться от абстракций в
> этом треде, тут и так полно недопонимания. так что лучше пример кода
> обсужать а не на пальцах пытаться что-то объяснить и демагогией заниматься.
>
>
> --
> С уважением,
>
> Ольга Смирнова
> Perl-программист проекта Деньги@mail.ru
> раб.: +7 (495)-725-63-57 (внутр. 2199)
> моб.: +7 (926)-959-16-23
> e-mail: o.smirnova на corp.mail.ru
> skype: olga_smirnova89
> mail-agent: o.smirnova на corp.mail.ru
> ISQ: 232733122
>
> [image: mail.ru] <http://mail.ru>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20151013/e7045853/attachment-0001.html>
----------- следущая часть -----------
Вложение не в текстовом формате было извлечено…
Имя: logo_full.png
Тип: image/png
Размер: 9565 байтов
Описание: отсутствует
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20151013/e7045853/attachment-0001.png>


Подробная информация о списке рассылки Moscow-pm