а можно наоборот — в статических пользоваться одним типом там, где это нужно.
правда, это синтаксически обычно плохо выглядит, поэтому появляется поддержка языка, как dynamic в C#
Кстати да, из хаскела же тоже можно сделать динамически типизированный язык. Непонятно зачем, но можно. Typeable же. А ещё если не обращать внимание на DataKinds то на уровне типов хаскел выглядит почти как "динамически типизированный" (kind-ированный?)