Python is the nicest language I currently know of, but static typing is a big advantage due to auto-completion (although there is limited support for dynamic languages, it is nothing compared to that supported in static). I'm curious if there are any languages which try to add the benefits of Python to a statically typed language. In particular I'm interesting in languages with features like:
- Syntax support: such as that for dictionaries, array comprehensions
- Functions: Keyword arguments, closures, tuple/multiple return values
- Runtime modification/creation of classes
- Avoidance of specifying classes everywhere (in Python this is due to duck typing, although type inference would work better in a statically typed language)
- Metaprogramming support: This is achieved in Python through reflection, annotations and metaclasses
Are there any statically typed languages with a significant number of these features?