While these constructs were designed for ANSI C, it should be straightforward to add analogous constructs to other statically typed languages.
--Dynamic code in `C is statically typed. This is consistent with C and improves the performance of dynamic compilation by eliminating the need for dynamic typechecking.
Finally, the mechanisms that it provides for dynamic code generation can be mapped onto statically typed languages other than ANSI C.
The base language is Trellis (originally called Trellis/Owl, hence DOWL where the D stands for Distributed), a statically typed
object-oriented language with multiple inheritance and genericity.
Statically typed languages are now widely accepted as being a necessity for secure program execution, verifying at compile-time that programs satisfy certain decidable invariants in terms of the correct use of data structures, and yielding information about data usage which allows data representations to be optimized [Appel 1992].
Despite the aforesaid advantages of static typing, some form of dynamic (runtime) typing has been proposed for statically typed languages.
An alternative has been proposed for incorporating dynamic typing into a statically typed language, based on an explicit type dynamic for dynamically typed values [Abadi et al.
In this article we present a new approach to incorporating dynamic typing into statically typed languages, particularly languages with parametric polymorphism such as ML.
One motivation has been to allow any program to be expressed in a statically typed language which is expressible in a dynamically typed language (such as Lisp or Scheme); if a program in the latter language cannot be statically type-checked in certain places, then insert run-time checks into the code.