Что касается "столь же мощного вывода Хаскелла", я не думаю, что Хаскеллу приходится иметь дело с
- Динамический подтип в стиле OO (классы типов могут делать что-то похожее, но классы типов проще набирать / выводить)
- перегрузка метода (классы типов могут делать что-то подобное, но классы типов легче набирать / выводить)
То есть, я думаю, что F # имеет дело с некоторыми сложными вещами, которые Хаскелл не делает. (Почти наверняка Haskell имеет дело с некоторыми трудностями, которых нет у F #.)
Как отмечается в других ответах, большинство основных языков .NET имеют инструментальные средства Visual Studio в качестве основного влияния на разработку языка (см., Например, как LINQ имеет «from ... select» вместо SQL-y »select. .. from ", мотивированный получением intellisense из префикса программы). Интеллектуальность, загадочность ошибок и понятность сообщений об ошибках - все это факторы, определяющие дизайн F #.
Вполне возможно, что можно делать лучше и делать выводы больше (не жертвуя другим опытом), но я не думаю, что это является одним из наших главных приоритетов для будущих версий языка. (Хаскелеры могут считать вывод типа F # несколько слабым, но они, вероятно, превосходят по численности те, кто считает вывод F # очень сильным. :))
Также может быть трудно расширить вывод типа неразрывным способом; в будущей версии можно поменять нелегальные программы на легальные, но вы должны быть очень осторожны, чтобы ранее легальные программы не меняли семантику в соответствии с новыми правилами вывода, а разрешение имен (ужасный кошмар на всех языках), вероятно, взаимодействовать с изменениями типа-вывода удивительными способами.