PostScript で単一代入できないか試したときのアレ

以下の続き

クロージャに実行時の辞書のコピーを残すバージョンはこんな風になります。

/closure{
    [
        countdictstack array dictstack
        [
            exch{
                dup systemdict eq{
                    cleartomark [ systemdict
                }if
                dup length dict copy
            }forall
        ]
        {
            begin
        }/forall cvx
        counttomark 2 add -1 roll
        /stopped cvx
        4 index length{
            end
        }/repeat cvx
        {
            stop
        }/if cvx
    ]cvx
}def

ただし、クロージャ内にクロージャを作ると、指数関数的に辞書が増えます。