Como definir um tipo de referência no METAPOST?

Como definir um tipo de referência no METAPOST?

Suponha que estejamos definindo um canvastipo de dados abstrato no METAPOST, onde algumas tarefas são reunidas. Gostaria de definir uma espécie dereferênciapara a última tarefa adicionada, mas não conheço o METAPOST suficientemente bem para descobrir qual conceito de macro devo usar.

Aqui está um código autônomo que ilustra o uso de tal referência:

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;

Como posso definir corretamente a current_taskmacro, para poder modificá- la para se add_taskreferir a (como sugerido no comentário)?current_task#@._task[#@._task_n]

informação relacionada