Prendendo spunto dai prototipi Javascript, ho avuto l'idea di un linguaggio in cui ogni istanza può essere utilizzata come classe.
Prima di reinventare potenzialmente la ruota, vorrei chiedere se esiste già un linguaggio che usa questo concetto:
//To declare a Class, extend the base class (in this case, Type)
Type(Weapon,{price:0});
//Same syntax to inherit; simply extend the parent:
Weapon(Sword,{price:3});
Weapon(Axe,{price:4});
Sword(Katana,{price:7});
Sword(Dagger,{price:3});
//And the same to create an instance:
Katana(myKatana,{nickname:"Leon"});
myKatana.price; // 7
myKatana.nickname; // Leon
// An operator to return children of a class;
Sword_; // [Katana, Dagger]
// An operator to return array of descendants;
Sword__; // [Katana, Dagger, myKatana]
// An operator to return array of parents;
Sword^; // Weapon
// Arrays can be used as elements
Sword__.price += 1; //increases price of Sword's descendants by 1
mySword.price; //8
// And to access specific element (using its name instead of index)
var name = "mySword"
Katana_[name]; // [mySword]
Katana_[name].nickname; // Leon
Questo tipo di approccio è già stato studiato / implementato?