Статья:
Макросы в NemerleАвтор(ы): Владислав Чистяков
Дата: 09.12.2006
В статье на базе практических примеров разбирается что такое макросы Nemerle, что они могут и как их создавать.
Авторы:
Владислав Чистяков
Аннотация:
В статье на базе практических примеров разбирается, что такое макросы Nemerle, что они могут и как их создавать.
30.01.07 18:05: Перенесено модератором из 'Декларативное программирование' — IT
Здравствуйте, <Аноним>, Вы писали:
А>Здравствуйте, Владислав Чистяков, Вы писали:
ВЧ>>В статье на базе практических примеров разбирается, что такое макросы Nemerle, что они могут и как их создавать.
А>С нетерпением ждем статью "GUI-приложение на Nemerle за 0xF секунд."
-1
А смысл в такой статье?
Пару кнопок в дизайнере форм поставил и ГУИ-приложение есть (даже на C# это делается за ~ 0xF секунд).
Вот про макросы почитать интересно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, Андрей Хропов, Вы писали:
АХ>-1
АХ>А смысл в такой статье?
Думаю, товарищь просто ёрничает. Он уже немного вырос из коротких штанишек и начал с призрением смотреть на статьи для начинающих. Когда он подрастет еще немного, то поймет, что все мы постоянно становимся начинающими в той или ной области, а те что перестали становиться таковыми попросту стали старыми ворчливыми пердунами.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Здравствуйте, Владислав Чистяков, Вы писали:
ВЧ>В статье на базе практических примеров разбирается, что такое макросы 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>>
Здравствуйте, 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>>