Я бы разрывался между использованием некоторого существующего языка низкого уровня и написанием своего собственного на C #, но с гораздо лучшей поддержкой обобщений.
Во втором случае я бы сделал каждый метод универсальным, но все ограничения будут разрешены компилятором - чтобы разрешить «типизацию», как в Scala, но все же язык должен быть статичным. Также статические виртуальные методы снизили бы кодовую базу.
У меня была эта идея в течение долгого времени, но она никогда не представляется осуществимой в реальном времени, так что, кто знает, может быть, в будущем. : -)