К основному контенту

Nemerle Метапрограммирование

Nemerle - язык программирования, который отлично подходит для начала изучения метапрограммирования. Сайты: http://nemerle.org  https://github.com/rsdn/nemerle/wiki

Пишем макрос аля writeln из старого pascal/dlang.

Сам макрос(utils.n):
#pragma indent // - для использования отступов вместо фигурных скобок
// мне больше нравится с отступами - код читать легче
using System.Console;

macro writeln (params  a: array[expr])
    mutable exps = [];     
        foreach(e in a)
         exps = <[ Write($e); ]> :: exps;

    exps = <[ WriteLine();]> :: exps;
    exps = exps.Reverse();
    <[ { .. $exps } ]>

/* - можно и так(как в си)
macro writeln (params  a: array[expr]) {
    mutable exps = [];     
        foreach(e in a)
         exps = <[ Write($e); ]> :: exps;

    exps = <[ WriteLine();]> :: exps;
    exps = exps.Reverse();
    <[ { .. $exps } ]>
}
*/

Его использование(main.n):
#pragma indent 

writeln ("Name = ", "Alice", ", age = ", 23, ", student = ", true)

foreach( i in [1..100])
    writeln("i = ", i,", oven = " ,i % 2)

Собираем и запускаем:

ncc.exe -bar -debug+ -r Nemerle.Compiler.dll -t:dll utils.n -out:utils.dll
ncc.exe -bar -debug+ -r utils.dll -t:exe main.n -out:main.exe && ./main.exe


Отличный первоклассный функциональный язык программирования, 
во многом мощнее и удобнее модного ныне F#.
Надеюсь у разработчиков хватит сил завести его на dotnet core.



Комментарии

Популярные сообщения из этого блога

Кирилица в Arch Linux

После вчерашних обновлений в консоли Arch Linux при выборе русской локали вместо букв печатаются белые квадратики. Очевидно, что по какой-то причине не загружается прописанный в rc.conf шрифт. Временное лекарство от этого: выполнить команду setfont cyr-sun16 . Еще у меня в момент начальной загрузки появляется рябь на экране как от сильных электромагнитных помех в ЭЛТ, хотя у меня ЖК. Может быть это как-то связано.

Сортировка массивов в groovy

Любой массив в java и groovy можно отсортировать статическим методом: Arrays.sort(c); причем это будет очень быстро сто тысяч элементов типа int сортируются за 1 секунду на celeron M 1,8 Mg. Если это массив объектов можно использовать перегруженный метод Arrays.sort(c,comporator);

Arch Linux - руссификация консоли

Вчера, придя с работы, как всегда затеял InstallFest. Уже практически не задумываясь установил свежий арч. И тут заметил что в tty вместо русского - квадратики. Под утро нашел таки сообщение на форме, что в этом виноваты дрова от видео. Там правда речь шла о нвидиа, а у меня ати. Буду пробовать. И еще в lxterminal обратил внимание что сообщения на русском, а то что я вводил на русском потом возвращается системой в виде юникод-символов. Вот такие дела. UPDATE: драйвер не причем. переустановил в консоли(до установки X) по прежнему квадратики вместо букв. неужели придется переключатся на инглиш? Заметил что initscripts скачался c какого-то зеркала не с яндекса. возможно причина в нем.