код perl5 с (игнорируемыми) типами данных perl6

Я хочу начать готовить код perl5 для perl6. в частности, мне нравится идея объявления типов, которыми должны быть мои переменные. perl6 определяет Bool, Int, Array, Hash, Num, Complex, Pair и Str. Так что я, по сути, хотел бы сейчас сделать эквивалент препроцессора C #define Int /**/. Было бы даже лучше, если бы он проверил тип данных, но я могу жить и без него.

Легкий? Жесткий? Невозможно?


person ivo Welch    schedule 12.08.2016    source источник


Ответы (2)


Вам придется написать синтаксический анализатор, который может анализировать Perl 5. Если ваш код не является достаточно простым, он довольно высок по шкале жесткости.

Кроме того, я обнаружил, что структура программ Perl 6 сильно отличается от кода Perl 5. Технически вы можете оставаться очень близким к соотношению 1: 1 построчно при переносе Perl 5 на Perl 6, но результат не будет идиоматическим, медленным и трудным для поддержки при полном переходе на Perl 6. Простое добавление пустых макросов не поможет. вас много, потому что каждая ваша ошибка просто игнорируется. На самом деле это может увеличить нагрузку, если вы захотите окончательно перенести программу.

Идея привлекательна, но вы можете просто увеличить нагрузку без особой выгоды.

person Community    schedule 12.08.2016

Есть несколько модулей Perl 5, которые идут в этом направлении. Для ориентации объекта вы можете использовать Moose и MooseX::Method::Signatures.

Для объявления подпрограмм и методов используются Method::Signatures, Sub::Signatures и Kavorka.

Также посмотрите в Perl6namespace на CPAN.

person BarneySchmale    schedule 12.08.2016