Определение операторов в Boo

Я собираюсь перенести некоторые из своих более легких метапрограмм с Nemerle на Boo и пытаюсь выяснить, как определить пользовательские операторы. Например, я могу сделать в Nemerle следующее:

macro @<-(func, v) {
    <[ $func($v) ]>
}

Тогда эти два эквивалентны:

foo <- 5;
foo(5);

Я не могу найти способ сделать это в Boo — есть идеи?


person Serafina Brocious    schedule 11.10.2008    source источник


Ответы (2)


Хотя Boo поддерживает перегрузку операторов путем определения соответствующей функции статического оператора (op_addition), а также поддерживает синтаксические макросы, в настоящее время он не поддерживает создание пользовательских операторов.

person Marcus Griep    schedule 10.07.2009
comment
Обратите внимание, однако, что расширяемый синтаксис (который является единственной недостающей частью, позволяющей использовать эту функцию) — это функция Boo, которая в настоящее время находится в разработке, поэтому она должна быть доступна в ближайшее время. Я имею в виду, в конце концов. - person Avish; 01.09.2009

Я не уверен, что это именно то, что вам нужно, но вы можете создавать синтаксические макросы в Boo. Некоторая информация есть на сайте CodeHaus, http://boo.codehaus.org/Syntactic+Macros, но синтаксис изменился в одном из последних релизов. Я не знаю никаких руководств по новому синтаксису, но в исходном коде Boo 0.8.2 есть несколько примеров (некоторые языковые структуры реализованы в виде макросов). Если вы не хотите загружать полный исходный код, вы можете просмотреть репозиторий SVN, https://svn.codehaus.org/boo/boo/trunk/src/Boo.Lang.Extensions/Macros./. Макрос assert был бы хорошим началом.

ХТН

стоо

person Stoo    schedule 13.10.2008