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 } ]> } */ Его использовани...
t.me/perfect0sight