After reading this article: Dynamic Object Model -
http://dirkriehle.com/computer-science/research/2005/plopd-5.pdf , I
think I understand the dynamic aspect you mentioned (I would really
appreciate if my understanding is verifeid by someone). Basically, in
order to dynamically create new data type of a specific domain (such
as banking accounts according to the examples of the paper) in
runtime, we need to model the metadata of that datatype (in this case,
AccountType is the metadata of Account), and model the metadata of its
properties (PropertyType with TypeChecking is the metadata of
Property). The Account object is just value holder for the common and
unchanged properties. The variants of Account (Such as SavingAccount,
CheckingAccount..) is kept by the AcccountType, and AccountType and
the properties of AccountType is supplied at runtime by the user
through user input. In this example, this pattern is useful if we have
500 different types of accounts, each is a bit different by each other
(such as SavingAccount has no overdraw limit but CheckingAccount
does). To model a class hierarchy in such dynamic environment by
predefining at compile time is impossible.
Is this what you refere to, Mr.Conrad?
So, I can see that with Lisp, I can define a structure of an object
very easy. However, the example code at the note is not really clear
how it strongly supports dynamic objection creation. i.e. if I want to
create variants of Orc, such as FarmerOrc, BattleOrc, FemaleOrc.... in
the same manner as Account creation above (which means I may add/
modify the existing structure of the Orc and its variants at runtime),
how can I do that dynamically at runtime, by user suppliedi nput?
Btw, I had another question about syntax expression:
http://stackoverflow.com/questions/9555387/what-is-syntax-expression .
Feel free to look at it if you have free time.