METAPOST で参照の種類を定義するにはどうすればよいでしょうか?

METAPOST で参照の種類を定義するにはどうすればよいでしょうか?

canvasMETAPOSTでいくつかのタスクが集められた抽象データ型を定義していると仮定します。参照最後に追加されたタスクですが、どのマクロ概念を使用すればよいか判断できるほど METAPOST をよく理解していません。

このような参照の使用法を示す no-op コードを次に示します。

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_taskcurrent_task#@._task[#@._task_n]

関連情報