My dream is a static-first (like with inmutable-first) language with a way to do dynamic.<p>The thing is not available (as far I know) is to build a dynamic object and "close it" for further modification so the compiler can optimize well. Other, that requiere good metaprograming, is to build a dynamic object AT COMPILE TIME (macro?) and close it, then the type-system work after that (F# type provider is almost this)<p>A use case is reflect a database/data storage like JSON or relational table. I wish, like with python, to do:<p><pre><code> class Customer = @build(table("Customer"))
</code></pre>
and after this line :<p><pre><code> c = Customer()
print c.name
</code></pre>
to 'c' be a static type. If at compile time, it check the type, let say the field change to c.fullname, to mark as a type error.<p>If in runtime, like a interpreter, to "close" Customer and be certain that it never will mutate.<p>AKA: Inmutable types/clases, but the posibility to mutate it in some discret places.<p>Make sense?