You made a small mistake in your first `+=` proc.

What you _want_ to do in a proc such as that is _mutate_ the existing input, 
not produce an output.

You want to change the existing `VGALine` in `a` (and by extension: `line`) 
instead of making an entirely new one, right? You did the opposite and created 
a new one (so line += 1 creates a new VGALine value).

And since nim doesn't allow you to use a proc that returns something without 
_explicitly saying_ that you don't want it to return something, this is the 
compiler basically refusing to compile something that it is betting on is an 
accident.

Try to replace you `+=` proc for VGALine with something like this:
    
    
    proc `+=` (a: var VGALine, b: int) =
      a = ((a.int+b) mod 80).VGALine
    
    
    Run

Reply via email to