to post messages and comments.

как сделать
anyLenght :: [forall a. a] -> Int

вот такое не компилируется

anyLenght :: [forall a. a] -> Int
anyLenght [] = 0
anyLenght (_:as) = 1 + (anyLenght as)

main = print $ anyLenght ["eijs", True]

Это всего лишь надуманное приседание, но все таки

Любителям статической типизации на самом деле просто зачастую не хватает кругозора, эрудированности и образования.

Чтобы что-либо сравнивать — нужно иметь представление как о том, что сравнивают, так и о том, с чем сравнивается.

Направо и налево слышно — "х-ль крут! O-l крут! sc-a крута!" Крут? По сравнению с чем?

Кто из любителей статики писал достаточно много на нормальном динамически-типизированном языке? Чтобы действительно оценить все плюсы и минусы динамики? Кто писал на языке с опциональными декларациями типов?

Да нихрена, я подозреваю, никто.

Сравнение, даже если это и не указывается явно, идет обычно с каким-нибудь Javascript. Но JS, извините ли, даже по сравнению с жабой — говно полнейшее. Прикрути к нему условный хиндли-милнер — он бы не стал меньшим говном.

О Clojure, CL, Smalltalk — большинство агитаторов за статику как максимум всего лишь слышали.
Я ни разу не видел более-менее обстоятельных сравнений и аргументов. Максимум — аргументы на уровне "статика позволяет более лучше разрабатывать системы и писать код".

Лично я, например, могу достаточно четко и по пунктам объяснить, где и почему динамически-типизированные языки выигрывают, могу, взяв условный х-ль и условный cl, расписать, почему на первом создавать программы и компоненты гораздо менее удобно и практично. Способны ли на такое адепты статики? Как правило, нет. Все их аргументы обычно сводятся не более чем к anecdotal evidence и существующему лишь у них в голове common sense.