Здравствуйте, DarkEld3r, Вы писали:
DE>В том же хаскеле, с его тотальным выводом типов, у не локальных функций типы всё-таки указывают явно и в таком случае разницы нет.
Да, в хаскеле указывают типы и там, где их можно вывести (как правильно подмечено в соседнем ответе — это можно сделать не везде). Но "можно указывать" и "нельзя не указывать" — это не одно и то же. На самом деле это настолько различные варианты, насколько вообще возможно.
Например, при выводе типов, можно писать "от композиции", т.е. сначала скомбинировать комбинаторы, а потом посмотреть какой будет тип (и, закончив эксперименты с кодом, вставить сигнатуру при желании).
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Здравствуйте, Klapaucius, Вы писали:
K> Но "можно указывать" и "нельзя не указывать" — это не одно и то же.
Естественно. Справедливости ради, вариант "нельзя не указывать" тоже имеет определённые "преимущества" — не будет соблазна забить на указание типов и код (наверное) читать будет проще.
K> На самом деле это настолько различные варианты, насколько вообще возможно.
Да ладно? Есть ещё вариант "нельзя указывать".
Здравствуйте, monax, Вы писали:
M>Недавно "в целях повышения образованности" взялся за изучение OCaml. Язык очень понравился, прямо такой хитрый и умный питон с компиляцией. И вот интересно стало, а почему он не взлетел и не стал одним из мейнстримовых языков? Чисто функциональным его не назовёшь, императивное программирование в нём есть, при этом порядок вычислений в нём прямой, а не ленивый, т.е. всегда можно предсказать, в каком порядке будут выполняться команды. Вывод типов — просто замечательная идея. Но при всех этих прекрасных характеристиках в мейнстриме его нет, ну разве что в виде F#, но это совсем недавно. Так почему он не отвоевал своё место под солнцем?
Здравствуйте, monax, Вы писали:
M>...Но при всех этих прекрасных характеристиках в мейнстриме его нет, ну разве что в виде F#, но это совсем недавно. Так почему он не отвоевал своё место под солнцем?
почему симула и смолток не популярны? разве ооп — плохая идея?
почему модула не в мейнстриме? неужели программисты не понимают преимуществ модульности?
почему ада не используется нынче? как вообще можно обойтись без исключений и параллельности, не говоря уж о type traits?
наконец, что не так с идеями структурного программирования паскаля и алгола?
как ни крути, из всех этих языков f# — второй после паскаля, которому удалось хотя бы относительно выйти в люди
M>Недавно "в целях повышения образованности" взялся за изучение OCaml. Язык очень понравился, прямо такой хитрый и умный питон с компиляцией. И вот интересно стало, а почему он не взлетел и не стал одним из мейнстримовых языков?
Некоторые его любят, но стрёмноватый синтаксис, непонятно зачем нужные разнонаправленные фичи,
фейлы рантайма (подрезанный бит), так и не сделанная SMP, ну и главное, чисто франзцуская
извращённость. А правильным питоном является хаскель.
Здравствуйте, monax, Вы писали:
M>Недавно "в целях повышения образованности" взялся за изучение OCaml. Язык очень понравился, прямо такой хитрый и умный питон с компиляцией. И вот интересно стало, а почему он не взлетел и не стал одним из мейнстримовых языков? Чисто функциональным его не назовёшь, императивное программирование в нём есть, при этом порядок вычислений в нём прямой, а не ленивый, т.е. всегда можно предсказать, в каком порядке будут выполняться команды. Вывод типов — просто замечательная идея. Но при всех этих прекрасных характеристиках в мейнстриме его нет, ну разве что в виде F#, но это совсем недавно. Так почему он не отвоевал своё место под солнцем?