Wie definiert man eine Referenzart in METAPOST?

Wie definiert man eine Referenzart in METAPOST?

Angenommen, wir definieren einen canvasabstrakten Datentyp in METAPOST, in dem einige Aufgaben gesammelt werden. Ich möchte eine ArtReferenzzur zuletzt hinzugefügten Aufgabe, aber ich kenne METAPOST nicht gut genug, um herauszufinden, welches Makrokonzept ich verwenden sollte.

Hier ist ein No-Op-Code, der die Verwendung einer solchen Referenz veranschaulicht:

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;

Wie kann ich das Makro richtig definieren current_task, sodass ich das add_taskMakro so ändern kann, dass es auf „verweist“ current_taskstatt auf #@._task[#@._task_n](wie im Kommentar vorgeschlagen)?

verwandte Informationen