Здравствуйте, _Claus_, Вы писали:
VD>>В питоне (и Бу) просо нет понятия неизменяемой переменной. Потому и проблемы этой нет. _C_>да есть в Boo — const называется.
Если я правильно понимаю, это совсем не то. В const скорее всего нельзя помещать ссылку на объект. Только на предопределенные типы вроде целых или строк (как в C#).
Ну, и как сам понимаешь идея объявлять что-то без декларации стразу идет лесом.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
H>>Нафига это может потребоваться? _C_>чтобы не писать mutable-ы и def-ы перед переменными.
Ты их не просто так пишешь. Ты говоришь компилятору где появилась новая переменная. Компилятор, за это, поймает для тебя некоторое количество ошибок.
_C_>что это может вычислить компилятор. _C_>я прикинул, мне, если портировать свой проект надо дописать _C_>где-то 17 000 мутаблодефов (50к строк). чесслово — есть дела поважнее.
Дык, что толку то того, что переменные у тебя проскочат без изменения? Все равно весь остальной синтаксис другой. Уж лучше скомпилить имеющуюся версию на Бу с добавленным атрибутом InternalsVisibleToAttribute, что даст возможность развивать продукт на немерле не переписывая все. Или с помощью декомпилятора перевести код в C# или Nemerle, а дальше доработать напильником.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VD>Дык, что толку то того, что переменные у тебя проскочат без изменения? Все равно весь остальной синтаксис другой. Уж лучше скомпилить имеющуюся версию на Бу с добавленным атрибутом InternalsVisibleToAttribute, что даст возможность развивать продукт на немерле не переписывая все. Или с помощью декомпилятора перевести код в C# или Nemerle, а дальше доработать напильником.
Языки похожи. если вы не дропнули вложенность отступами, то исходник Boo, не считая {}-замыканий и макросов, приводится к nemerle 1) удалением двоеточий; 2) заменой 'as' на двоеточие +
макрос for без скобок "for i in set_x" + те макросы в компилятор, о которых мы говорим.
Здравствуйте, _Claus_, Вы писали:
_C_>Языки похожи. если вы не дропнули вложенность отступами, то исходник Boo, не считая {}-замыканий и макросов, приводится к nemerle 1) удалением двоеточий; 2) заменой 'as' на двоеточие + _C_>макрос for без скобок "for i in set_x" + те макросы в компилятор, о которых мы говорим.
тогда надо ударить артиллерией и написать грамматику для БУ (или хотя бы нужное вам подмножество)
Здравствуйте, _Claus_, Вы писали:
>>> Или с помощью декомпилятора перевести код в C# или Nemerle, а дальше доработать напильником. _C_>а есть декомпилятор сразу в Nemerle?!
Да, но надо собирать самостоятельно и вручную кидать в каталог рефлектора (он умудряется не прописывать путь к себе нигде). Исходники лежат по пути Nemerle\tools\reflector-addon. Не уверен, только что он даст компилируемый код. Скорее всего придется дорабатывать напильником.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, para, Вы писали:
P>Здравствуйте, _Claus_, Вы писали:
_C_>>Языки похожи. если вы не дропнули вложенность отступами, то исходник Boo, не считая {}-замыканий и макросов, приводится к nemerle 1) удалением двоеточий; 2) заменой 'as' на двоеточие + _C_>>макрос for без скобок "for i in set_x" + те макросы в компилятор, о которых мы говорим.
P>тогда надо ударить артиллерией и написать грамматику для БУ (или хотя бы нужное вам подмножество)
НА Boo кроме меня и еще 3-х диверсантов никто серьезного не пишет. Время лучше потратить на что-то более полезное (CoffeeScript, Prolog, ..)
Здравствуйте, _Claus_, Вы писали:
_C_>Не хочет компилится — показывает на эту строку и грит: type PExpr not supported for macro parameter _C_>macro @:=(expr1 : PExpr, expr2 : PExpr) _C_>Значит ли это, что компилятор надо тянуть из репозитория? у меня стоит майский 1.0 релиз.. _C_>или в чем другом?
Не обязательно. Но взять последнюю бэту. В прочем, типы у параметров макросов можно просто стереть.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VD>Не обязательно. Но взять последнюю бэту. В прочем, типы у параметров макросов можно просто стереть.
Все ок.
Не получается тем же способом переопределить обычный = , это возможно? компилятор вроде как макрос не видит, что с ним, что без него — ошибки одинаковые.
Здравствуйте, _Claus_, Вы писали:
_C_>Надеюсь это не идеологический запрет, а временная трудность, ибо в DSL-лях нужно бывает особое "равно"
В ДСЛ-ях можно интерпретировть АСТ совсем по другому. Но в рамках Немерле создать макрос "=" нельзя.
_C_>вот такой код не хочет работать с макросом _C_>class m _C_> s := 0
Естественно. Это тело класса тут ожидаются его члены.
_C_>т. е. развертка макроса в контексте класса недопустима или не всегда допустима? хм..
Макросы бывают разные. Макросы уровня выражения могут использоваться только там где ожидается выражение.
Прочти вот это
Здравствуйте, _Claus_, Вы писали:
_C_>class m _C_> s := 0
Еще раз повторюсь, что идея сэмулировать на немерле питон — это плохая идея. Как минимум макры Немерле 1.х не настолько гибки чтобы воспроизвести все нюансы синтаксиса питона. Лучше выбрать другой подход.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.