Макросы в Nemerle
От: Владислав Чистяков Российская Империя www.nemerle.org
Дата: 30.07.06 13:36
Оценка: 775 (15)
Статья:
Макросы в Nemerle
Автор(ы): Владислав Чистяков
Дата: 09.12.2006
В статье на базе практических примеров разбирается что такое макросы Nemerle, что они могут и как их создавать.


Авторы:
Владислав Чистяков

Аннотация:
В статье на базе практических примеров разбирается, что такое макросы Nemerle, что они могут и как их создавать.

30.01.07 18:05: Перенесено модератором из 'Декларативное программирование' — IT
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Макросы в Nemerle
От: Аноним  
Дата: 31.07.06 09:08
Оценка: -2
Здравствуйте, Владислав Чистяков, Вы писали:

ВЧ>В статье на базе практических примеров разбирается, что такое макросы Nemerle, что они могут и как их создавать.


С нетерпением ждем статью "GUI-приложение на Nemerle за 0xF секунд."
Re[2]: Макросы в Nemerle
От: Андрей Хропов Россия  
Дата: 01.08.06 09:59
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Здравствуйте, Владислав Чистяков, Вы писали:


ВЧ>>В статье на базе практических примеров разбирается, что такое макросы Nemerle, что они могут и как их создавать.


А>С нетерпением ждем статью "GUI-приложение на Nemerle за 0xF секунд."


-1

А смысл в такой статье?
Пару кнопок в дизайнере форм поставил и ГУИ-приложение есть (даже на C# это делается за ~ 0xF секунд).

Вот про макросы почитать интересно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Макросы в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.08.06 18:56
Оценка: +4 :)))
Здравствуйте, Андрей Хропов, Вы писали:

АХ>-1


АХ>А смысл в такой статье?


Думаю, товарищь просто ёрничает. Он уже немного вырос из коротких штанишек и начал с призрением смотреть на статьи для начинающих. Когда он подрастет еще немного, то поймет, что все мы постоянно становимся начинающими в той или ной области, а те что перестали становиться таковыми попросту стали старыми ворчливыми пердунами.
... << RSDN@Home 1.2.0 alpha rev. 637>>
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Макросы в Nemerle
От: gerrCrazzy  
Дата: 12.12.06 16:50
Оценка:
Здравствуйте, Владислав Чистяков, Вы писали:

ВЧ>В статье на базе практических примеров разбирается, что такое макросы Nemerle, что они могут и как их создавать.


Влад, тема синтаксического сахара для уточнения параметров макроса не раскрыта
если изменить текст макроса(test-001.n) на
using System.Console;

macro TestMacro(hisName : string)
{ WriteLine(hisName.GetType()); }

то во время компиляции получим сообщение "System.String"
Внимание, ворос, как теперь мне пользовать параметр hisName?
Потому как если добавить в код макроса строчку
 <[ WriteLine("run-time\nparam=" + $hisName ) ]>

получим ругань от компилера во время компиляции макроса

test-003-macro.n:9:5:9:33: error: in argument #2 (tl) of list.Cons[System.Object-], needed a list[Nemerle.Compiler.Parsetree.PExpr.Literal-], got list.Cons[string-]: common super type of types [Nemerle.Compiler.Parsetree.PExpr.Literal, string] is just `System.Object', please upcast one of the types to `System.Object' if this is desired

P.S. ncc из svn-a, revision 7080
... << RSDN@Home 1.2.0 alpha rev. 669>>
Re[2]: Макросы в Nemerle
От: Алексей П Россия  
Дата: 12.12.06 17:03
Оценка:
Здравствуйте, gerrCrazzy, Вы писали:

C>
C>using System.Console;

C>macro TestMacro(hisName : string)
C>{ WriteLine(hisName.GetType()); }
C>

C>то во время компиляции получим сообщение "System.String"
Логично, т.к. string параметр макроса — обязательно литерал. Он при передаче в макрос раскрывается в строку.

C>Внимание, ворос, как теперь мне пользовать параметр hisName?

C>Потому как если добавить в код макроса строчку
C>
 <[ WriteLine("run-time\nparam=" + $hisName ) ]>


Надо так:
 <[ WriteLine("run-time\nparam=" + $(hisName : string) ) ]>

Это преобразует строку обратно в литерал, который можно передать конструктору PExpr.(что-то)
Можно так:
 <[ WriteLine($("run-time\nparam=" + hisName : string) ) ]>

Это посчитает строку в компиляторе явно, а первый вариант — на оптимизаторе.
... << RSDN@Home 1.2.0 alpha rev. 668>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.