Тихо и незаметно вышел Ocaml 3.11. Несмотря на нумерацию релиз значимый. Изменения затронули компилятор, библиотеки и функции языка.
Некоторые главные изменения:
библиотека Dynlink тепрь доступна в нативных кодах для нескольких платформ.
Профессору В.С.Лугоффскому нужен. Для поднятия ЧСВ.
> В каких наиболее значимых проектах используется?
Главное, что используется в чисто понтовых куль-проектах. Это-таки не Жаба там какая нибудь для "быдлокодеров", а язык для настоящих больших учёных, типа "Ксеноцефала" aka "Маухуура".
Ну как всегда - чем запущенней язык, тем ярче на его рекламе проступают примеры quicksort и факториалы. гыгы :)
Тут про него: http://en.wikipedia.org/wiki/OCaml
И чего? Язык как язык, НИЧЕГО УМНОГО не написали даже в википедии.
А самое главное в работе, пусть это и банально, это доступ к базам, сеть, графика, шифрование, GUI и отчёты. Имею ввиду наличие надёжных и быстрых библиотек. А кто красивше записывает вычисление фибоначей - как-то пох...
> А самое главное в работе, пусть это и банально, это доступ к базам, сеть, графика, шифрование, GUI и отчёты.
А самое главное, что к языку все тобой перечисленное не имеет НИКАКОГО отношения. GUI, базы, сеть, отчеты и прочую муру прикрутить можно хоть к брейнфаку, было б желание и потребность.
и у меня есть реальный опыт использования этого мощного языка. И еще, задачу которую я на нем решал один человек будет писать долго или, что скорее всего, вообще никогда не напишет, опухнет просто, тогда как в ocaml она доволньо просто и, самое главное, весьма занимательно решается.
ocaml - хороший, haskell еще лучше в некотором роде, но в некотором и сливает.
> и у меня есть реальный опыт использования этого мощного языка. И еще, задачу которую я на нем решал один человек будет писать долго или, что скорее всего, вообще никогда не напишет, опухнет просто, тогда как в ocaml она доволньо просто и, самое главное, весьма занимательно решается.
Самый серьёзный проект, пожалуй, Coq. Собственно, язык ML изначально только для таких задач и создавался, почему его начали применять для чего-то кроме логики для меня загадка.
> И чего? Язык как язык, НИЧЕГО УМНОГО не написали даже в википедии.
Идиот. Кусок википедии на нём и написан - тот, который формулы рисует.
> А самое главное в работе, пусть это и банально, это доступ к базам, сеть, графика, шифрование, GUI и отчёты.
Ты конечно же быдлокодер, и ты не в курсе, но "работа" этой хернёй вовсе не ограничивается. Есть, например, задачи, требующие автоматической верификации логических доказательств - и именно для них Милнер в своё время и создал специальный язык ML.
Вот, посмотри например на этих пользователей OCaml, они то уж точно не быдлокодеры:
А для всего остального ML начали применять, вероятно, от того, что если уж написанная на нём программа скомпилировалась без ошибок, то она и работать будет с большой вероятностью без ошибок. А это, знаешь ли, ценится.
P.S. И ещё, если бы язык был таким "ненужным", Microsoft не стали бы его копировать. А так - клон OCaml войдёт в следующую Visual Studio.
> просто хороший язык. не без недостатков конечно, но...
Кстати о недостатках, ML изнасиловал одну из самых важных фичей функционального программирования. В ML (и OCaml в частности) преобразование let x = y in z => ((fun x -> y) z) не является тождественным.
Если кто не верует, то преобразуйте вот это:
let myhd = List.hd in (myhd [1;2;3]),(myhd ['a','b'])
> преобразование let x = y in z => ((fun x -> y) z) не является тождественным.
Наверное, автор хотел сказать => ((fun x -> z) y)
Да, не является.
# let myhd = List.hd in (myhd [1;2;3]),(myhd ['a';'b']) ;;
- : int * char = (1, 'a')
# ((fun myhd -> (myhd [1;2;3],myhd ['a';'b'])) List.hd);;
This expression has type char but is here used with type int
Похоже на издержки type inference. Интересно, в Haskell так же?
> Наверное, автор хотел сказать => ((fun x -> z) y)
Да, конечно же, опечатался.
> Похоже на издержки type inference.
Угу. Конкретно проблема алгоритма Хиндли-Милнера. Аргумент функции является свободной переменной в системе типовых уравнений, и потому не генерализуется.