p2
принимает имя файла и те же аргументы, что и plot2d
.
p2(file, [L])::=buildq([file, L],
(plot2d(splice(L)),
plot2d(splice(L), ['pdf_file, file])))$
f(x) := sin(x)$
g(x) := cos(x)$
p2("trigplot.pdf",
[f(x), g(x)], [x,-5,5],
[legend,"sin(x)","cos(x)"],
[xlabel,"x"],[ylabel,"y"],
[gnuplot_preamble,"set key box spacing 1.3 top right"]);
Это макрос .Сначала он заменяет file
и L
.splice (L) `преобразуется в список аргументов.После подстановки результирующее выражение оценивается в контексте вызывающей стороны.
Вы можете использовать macroexpand
, чтобы увидеть выражение после подстановки.
(%i1) a: 42 $
(%i2) macroexpand(p2(file, a, b));
(%o2) (plot2d(a, b), plot2d(a, b, ['pdf_file, file]))