type Person =
ref object
name: string
age: int
proc new(T:typedesc[Person], name:string, age:int): Person =
result.new()
result.name = name
result.age = age
proc greet(p:Person) =
echo "Hello, I'm ", p.name, "."
echo "I'm ", p.age, " years old."
proc main =
let andrew = Person.new("Andrew", 28)
let philip = Person.new("Philip", 26)
andrew.greet()
philip.greet()
main()
dHlwZSBQZXJzb24gPQogIHJlZiBvYmplY3QKICAgIG5hbWU6IHN0cmluZwogICAgYWdlOiBpbnQKCnByb2MgbmV3KFQ6dHlwZWRlc2NbUGVyc29uXSwgbmFtZTpzdHJpbmcsIGFnZTppbnQpOiBQZXJzb24gPQogIHJlc3VsdC5uZXcoKQogIHJlc3VsdC5uYW1lID0gbmFtZQogIHJlc3VsdC5hZ2UgPSBhZ2UKCnByb2MgZ3JlZXQocDpQZXJzb24pID0KICBlY2hvICJIZWxsbywgSSdtICIsIHAubmFtZSwgIi4iCiAgZWNobyAiSSdtICIsIHAuYWdlLCAiIHllYXJzIG9sZC4iCgpwcm9jIG1haW4gPQogIGxldCBhbmRyZXcgPSBQZXJzb24ubmV3KCJBbmRyZXciLCAyOCkKICBsZXQgcGhpbGlwID0gUGVyc29uLm5ldygiUGhpbGlwIiwgMjYpCiAgYW5kcmV3LmdyZWV0KCkKICBwaGlsaXAuZ3JlZXQoKQoKbWFpbigp