Небольшое дополнение.
Первое - решено отказаться от угловых скобок, и вместо них использовать обычные круглые со спецсимволом #. Угловые скобки приносят больше проблем, чем пользы. В языке D от угловых скобок отказались, в Scala отказались (там в пользу квадратных) и правильно сделали. В том же Си макросы используют обычные круглые скобки (даже без спецсимволов) и ничего.
Использование простых круглых скобок для шаблонов не есть хорошо с точки зрения понимания кода (смешиваются понятия вызова функции и макроподстановки). Вместо этого предлашается использовать скобки с символом #. То есть шаблон будет выглядеть так:
MyTempl#(x,y)
Таким образом, макрос - это идентификатор, начинающийся с решетки (мы как-бы имеем в виду что сам по себе макрос - код, относящийся к метауровню), а шаблон - идентификатор , аргументы которого начинаются с решетки. В общем вполне логично.
Шаблоны без аргументов все равно должны иметь скобки (также как и функции). Синтаксис типа "MyTempl#" (то есть шаблон с решеткой на конце) скорее всего недопустим, так как можно спутать с макросом.
Первое - решено отказаться от угловых скобок, и вместо них использовать обычные круглые со спецсимволом #. Угловые скобки приносят больше проблем, чем пользы. В языке D от угловых скобок отказались, в Scala отказались (там в пользу квадратных) и правильно сделали. В том же Си макросы используют обычные круглые скобки (даже без спецсимволов) и ничего.
Использование простых круглых скобок для шаблонов не есть хорошо с точки зрения понимания кода (смешиваются понятия вызова функции и макроподстановки). Вместо этого предлашается использовать скобки с символом #. То есть шаблон будет выглядеть так:
MyTempl#(x,y)
Таким образом, макрос - это идентификатор, начинающийся с решетки (мы как-бы имеем в виду что сам по себе макрос - код, относящийся к метауровню), а шаблон - идентификатор , аргументы которого начинаются с решетки. В общем вполне логично.
Шаблоны без аргументов все равно должны иметь скобки (также как и функции). Синтаксис типа "MyTempl#" (то есть шаблон с решеткой на конце) скорее всего недопустим, так как можно спутать с макросом.
No comments:
Post a Comment