Functional languages also have a simple and robust compositional denotational semantics, both static-given static in terms of functions, and dynamically in terms of gains and interactions. Functional languages also have a straight-forward logical semantics. They can feature very expressive typing disciplines. And these types can be used both for a static analysis or even extended to full-blown problem logics. They also have a natural structuring mechanism because of their conceptual vicinity to category theory. This suggests naturally abstract data types, polymorphisms , module structures and factorial programming. And finally they easily support formal validation, verification and specification.