@Serenitor It's different in many ways:

  * also changes semantics of == ("is it actually the same object" instead of 
"is this (other) object the same")
  * no dynamic dispatch is usable anyway unless {.inheritable.} is applied first
  * poorer performance due to dynamic heap allocation (and GC)
  * poorer performance due to memory fragmentation



Proof of the first thesis:
    
    
    type Person = ref object
      first, last: string
    
    let person1 = Person(first: "John", last: "Doe")
    let person2 = person1  # the very same object
    let person3 = Person(first: "John", last: "Doe")  # essentially the same 
value
    
    echo person1 == person2  # true
    echo person1 == person3  # false
    

I wouldn't be all-overjoyed with these Java-like == semantics...

Reply via email to