var fv = tree.free_vars
fv.add(op)
echo "fv = ", fv
tree.free_vars.add(op) wouldn't work: nim needed a var, so I created one, but it makes a copy of the sequence leaving the original unmodified (undesired).add(tree.free_vars, op)
@Arrrrrrrr, that doesn't work because nim wants a var instead of just a plain seq (tree.free_vars) whatever that means...
Here:
expr_tree.nim(272, 8) Error: type mismatch: got (seq[Op], Op)
but expected one of:
system.add(x: var seq[T], y: T)
ExprTree* = ref object
root : Op
free_vars : seq[Op]
ref object on ExprTree seems to have gotten rid of complaint. I suppose to I could declare the tree param var?Then probably it didn't work because you created ExprTree like let tree = ExprTree() instead of var tree ExprTree():
type MyType = object
mySeq: seq[int]
let mt1 = MyType(mySeq: @[])
var mt2 = MyType(mySeq: @[])
add mt1.mySeq, 0 # Error, mt1 is let
add mt2.myseq, 0 # Works fine, it is a var
enjoysmath: whatever that means...
var means mutable, let means immutable.