In order to guarantee soundness, i.e. the property that type annotations do correctly characterize the relevant run-time values, a gradually-typed language needs to insert run-time type-checks, which can be very expensive. Finally, many language features and idioms are specific to either dynamically- or statically-typed languages; a gradually-typed language will have to support its features and idioms in both disciplines, which can be tricky and lead to unexpected behaviors.
- implementation techniques for efficient run-time checks
- design and implementation of common language features adapted to gradual typing
- efficiently expressing dynamic/static idioms in the respective other setting
- Generics in Gradual Typing
- Run-Time Type Evolution/Gradual Type-State
- Dynamic handling of member visibility (public/private/protected)
- Static member initialization