Nemerle - язык программирования, который отлично подходит для начала изучения метапрограммирования. Сайты: http://nemerle.org https://github.com/rsdn/nemerle/wiki
Пишем макрос аля writeln из старого pascal/dlang.
Сам макрос(utils.n):
Пишем макрос аля 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.
Комментарии
Отправить комментарий