Можно ли определить что-то вроде auto
в Perl 6
Я думаю, что-то вроде.Но мне придется перевести ваш вопрос на три разных вопроса, чтобы дать более полезный ответ.
Для моих ответов на первые два вопроса ниже, пожалуйста, обратитесь к комментарию reddit, который я написал об этом.Мой комментарий состоял из четырех частей, разделенных горизонтальными правилами.Первая и последняя части относятся к вашему вопросу.
Можно ли изменить язык Perl 6?
Да.
Вы можете более или менее произвольно изменить PerlЯзык «на лету» из пользовательского кода.
Процитируем точку с запятой из первой части комментария, который я связал выше:
- Внутренние DSL на сленге, построенные с использованием грамматик, как внешний DSL, но смешанный со стандартной грамматикой Perl 6 через сленговый механизм.Эти DSL должны быть написаны так, чтобы они хоть как-то согласовывались со стандартной грамматикой Perl 6.Код, написанный в таких DSL, выглядит встроенным, неотличимым от обычного кода. Соответствующие слайды .
Цитата из последней части, которую я написал:
Хотя сленги могут быть реализованы ... они официально не поддерживаются ...и не так уж слабы, как должны быть.
Можно ли написать макросы времени компиляции, которые связываются с компилятором?
Да.
К сожалению, вы можете 'пока не определим макросы операторов, которые вам понадобятся для объявления переменных нового типа.Цитируя последний раздел в комментарии, который я связал выше:
"Предполагаемые варианты дизайна для ситуаций, когда вам нужен внутренний DSL, но он слишком синтаксически конфликтует со стандартным Perl 6, чтобы просто использовать пользовательские подпрограммы и операторы... написать макрос is parsed
[или] написать сленг. Теоретически любой из них может анализировать любой синтаксис, который вы хотите. Но макросы is parsed
не были загружены и выглядят так, как будто они год или трипрочь - они все еще просто концепция дизайна, обсуждаемая в 007 . "
Возможно ли внедрить новые идеи в Perl 6?
Да.
Просто реализуйте свою идею и лоббируйте ее включение.Возможно начать со сленга.Возможно, просто взломать весь компилятор.
Я серьезно отношусь к этому последнему пункту.
Компилятор Rakudo Perl 6, конечно, с открытым исходным кодом.
Гораздо большеважно, что это в основном написано на Perl 6 .(И большая часть того, что не является Perl 6, это nqp, который в основном является подмножеством полного Perl 6.)
Заключение
Если вы можете написать некоторый базовый код Perl 6;готовы задать множество вопросов на IRC-канале freenode # perl6-dev ;и терпеливы;тогда вы сможете реализовать практически любую идею в Perl 6, и ваша идея auto
кажется относительно простой.
(где, по словам «относительно», я представляю, что знающий основной разработчик может сделатьподтверждение концепции через несколько часов при условии, что я правильно понял проблемы, с которыми они столкнутся, и однажды, когда сленг и / или макросы будут более отшлифованы, возможно, это займет около часа.)