Quickies

[categories] [index] [all (553)] [latest]

PostScript
  1. /call { exch begin load exec end } def
    
    /undoManager 10 dict def
    
    undoManager begin
        /MAX 3 def
        /ringBuffer MAX array def
        /head 0 def
        /print { ringBuffer == } def
        /do {
            ringBuffer head 3 -1 roll put
            /head head 1 add MAX mod def
        } def
        /reset { /ringBuffer MAX array def } def
        /undo {
            /head head 0 eq { MAX 1 sub } { head 1 sub } ifelse def
            ringBuffer head get % result
            ringBuffer head null put
        } def
    end
    
    3 undoManager /do call
    4 undoManager /do call
    5 undoManager /do call
    6 undoManager /do call
    
    undoManager /print call
    

    [6 4 5]

    undoManager /undo call ==
    

    6

    undoManager /print call
    

    [null 4 5]