This is how my dream programming language would look like:
- A powerful static type system with some support for dependent typing.
- Optional dynamic typing.
- Numeric Tower a la Lisp but statically typed.
- Macros a la Lisp.
- Primarily a Functional Programming language with basic support for imperative programming (like ML family).
- Garbage collection.
- Type inference.
- Continuations.
- Optional lazy semantics.
- All the control constructs would be provided in the form of library functions. (This can be made possible using last two features.)
- Minimal syntax (not as little as Lisps, but something of the sort of Ioke/Seph.)