¿Cómo definir un tipo de referencia en METAPOST?

¿Cómo definir un tipo de referencia en METAPOST?

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_taskmacro para poder modificarla add_taskpara que haga referencia a ella current_tasken lugar de #@._task[#@._task_n](como se sugiere en el comentario)?

información relacionada