Oh, probably. I thought that by "attach" you mean:
type Shape {.inheritable.} = ref object
...
area: proc(Shape): float
type Square = ref object of Shape
...
proc newShape(...): Shape =
...
area = areaShape
proc newSquare(...): Square =
...
area = areaSquare
It does have some advantages (although not so many if one doesn't fancy object extension, like in Scala, let's say).
