Supongamos que estamos definiendo uncanvas
tipo de datos abstracto en METAPOST, donde se recopilan algunas tareas. Me gustaría definir una especie dereferenciahasta la última tarea agregada, pero no conozco METAPOST lo suficiente como para determinar qué concepto de macro debo usar.
Aquí hay un código no operativo que ilustra el uso de dicha referencia:
def task text TASK =
vardef TASK.init =
enddef;
enddef;
def canvas text CANVAS =
numeric CANVAS._task_n;
task CANVAS._task[];
vardef CANVAS.init =
#@._task_n := 0;
enddef;
vardef CANVAS.current_task =
#@._task[#@._task_n]
enddef;
vardef CANVAS.add_task =
#@._task_n := #@._task_n + 1;
% #@.current_task.init; % ! Yield an isolated expression `init`
#@._task[#@._task_n].init;
enddef;
enddef;
canvas c;
c.init;
c.add_task;
bye;
¿Cómo puedo definir correctamente la current_task
macro para poder modificarla add_task
para que haga referencia a ella current_task
en lugar de #@._task[#@._task_n]
(como se sugiere en el comentario)?