Как определить вид ссылки в METAPOST?

Как определить вид ссылки в METAPOST?

Предположим, мы определяем canvasабстрактный тип данных в METAPOST, где собраны некоторые задачи. Я хотел бы определить своего родассылкак последней добавленной задаче, но я недостаточно хорошо знаю METAPOST, чтобы понять, какую концепцию макроса мне следует использовать.

Вот код без операций, иллюстрирующий использование такой ссылки:

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;

Как мне правильно определить current_taskмакрос, чтобы я мог изменить макрос add_taskтак, чтобы он ссылался на , current_taskа не на #@._task[#@._task_n](как предложено в комментарии)?

Связанный контент