вот мой из жизни аргумент. сейчас на clojure пишем сервис, с очень разветвленной логикой процесса обработки запросов. естественно там state machine. у каждого узла несколько входов, несколько выходов. следующий переход определяется по совокупности условий и текущего контекста процесса. то есть динамика полнейшая. еще вчерашние на java'исты мне признавались, что если бы мы писали это на java, то все было бы грустно и по бэклогку мы бы тащились еще в самом начале. да и не очень понятно как типами такую динамику обложить. говорят в итоге бы все свелось скорее всего к обычной хэшмапе с потерей преимуществ типизации. может они "не правильные" джависты и не знают как пользоваться типами, но на clojure им удобнее оказалось.