Форум программистов, компьютерный форум, киберфорум
Наши страницы
Другие языки программирования
Войти
Регистрация
Восстановить пароль
 
ntlinuxnt
$ su
1597 / 512 / 97
Регистрация: 18.11.2010
Сообщений: 2,805
Записей в блоге: 2
Завершенные тесты: 5
#1

OCaml - Программирование

12.08.2017, 00:15. Просмотров 241. Ответов 8
Метки нет (Все метки)

Собственно заинтересовал сабж, что думаете, кто использовал? Я так пробежался чем то на haskell похож, но как по мне проще, может я не тот раздел выбрал, но тут он более живой, интересно услышать ваши мнения. Заранее спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.08.2017, 00:15
Я подобрал для вас темы с готовыми решениями и ответами на вопрос OCaml (Программирование):

Работа с подсписками на языке Ocaml или F#
Как найти произведение элементов списка с учетом подсписков на языке Ocaml или...

Как собрать и установить ocaml и ocsigen?
Всем привет, незнаю в тот ли раздел щас пишу, ну если кто сталкивался или знает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
KolodeznyDiver
2491 / 1635 / 203
Регистрация: 01.06.2013
Сообщений: 3,330
Записей в блоге: 7
12.08.2017, 15:07 #2
Цитата Сообщение от ntlinuxnt Посмотреть сообщение
чем то на haskell похож
На F# похож ещё больше. F# - это, можно сказать, "OCaml .NET".
Это всё языки с ML-овским синтаксисом.
Когда я его "щупал", года 3-4 назад, был ещё менее дружествен к Windows чем Haskell.
korvin_ и pycture могут знать больше.
1
ntlinuxnt
$ su
1597 / 512 / 97
Регистрация: 18.11.2010
Сообщений: 2,805
Записей в блоге: 2
Завершенные тесты: 5
12.08.2017, 19:20  [ТС] #3
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
к Windows
На сколько я знаю сейчас нормально ставится вместе с пакет менеджером OPAM.
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
korvin_ и pycture могут знать больше.
Интересно было бы узнать что они думают.
1
korvin_
2092 / 1583 / 307
Регистрация: 28.04.2012
Сообщений: 5,707
12.08.2017, 21:04 #4
Цитата Сообщение от ntlinuxnt Посмотреть сообщение
Собственно заинтересовал сабж, что думаете, кто использовал? Я так пробежался чем то на haskell похож, но как по мне проще, может я не тот раздел выбрал, но тут он более живой, интересно услышать ваши мнения. Заранее спасибо!
Хороший язык, только, к сожалению, очень вяло развивается. Из более современных и живых альтернатив — F#, да. pycture вроде его хорошо знает.

Из отличий от Хаскелла:
– не ленив (есть пакеты для ленивости)
– нет классов типов, для Ad-Hoc полиморфизма используются либо функторы (параметризируемые модули) (хотя они более «жирные» что ли, т.е. как модули/пакеты в других языках; читал рекомендацию не злоупотреблять ими, плохо на производительности сказывается) либо объекты (след. пункт)
– явным образом поддерживает ООП с классами и объектами, причём как по мне, так сделано это лучше, чем во многих распространённых языках с Simula-подобным ООП, т.е. C++, Java, C#. Например, тип объекта и класс в Ocaml — разные вещи, классы используются фактически только для организации иерархии наследования, но типом объекта является его интерфейс (набор публичных методов), соответственно объектный тип можно объявлять обычным образом через type, и объекты создавать без использования классов.
– нет такого строгого выделения чистых и не чистых (IO) функций. Обычное значение, объявленное let x = 123 является иммутабельным, но let x = ref 123 уже нет и если функция ссылается на такой внешний для неё x, из сигнатуры функции об этом не узнать (конечно, в Хаскелле тоже можно спрятать IO внутрь какого-то своего типа и никому об этом не говорить, но это уже другое), поля объектов так же мутабельны, есть цикл for.
– AFAIK в Хаскелле система типов ушла за пределы возможностей Хиндли-Милнера, а с дополнительными фичами GHC — очень далеко ушла. В Ocaml'е же (если не считать объектов, наверное), чистый Х-М (или типа того), поэтому есть некоторые ограничения, а ля в типе функции нельзя использовать перерменные типы kind'а больше чем (*), т.е. в Хаскелле можно написать функцию
f :: m a -> m a
где m и a — переменные типы, при этом тип m имеет kind (* => *), а в Ocaml'е нельзя, только
f : list 'a -> list 'a
где list — конкретный тип.
Но тут я могу ошибаться, да и давно Ocaml не смотрел.
2
KolodeznyDiver
2491 / 1635 / 203
Регистрация: 01.06.2013
Сообщений: 3,330
Записей в блоге: 7
12.08.2017, 21:44 #5
Цитата Сообщение от ntlinuxnt Посмотреть сообщение
На сколько я знаю сейчас нормально ставится вместе с пакет менеджером OPAM.
О! Когдато стон стоял на тему "когда же сделают opam под win не через cygwin".
Цитата Сообщение от korvin_ Посмотреть сообщение
если функция ссылается на такой внешний для неё x, из сигнатуры функции об этом не узнать
Т.е. OCaml поддерживает глобальные переменные.
1
korvin_
2092 / 1583 / 307
Регистрация: 28.04.2012
Сообщений: 5,707
12.08.2017, 23:54 #6
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Т.е. OCaml поддерживает глобальные переменные.
сам посуди
2
ntlinuxnt
$ su
1597 / 512 / 97
Регистрация: 18.11.2010
Сообщений: 2,805
Записей в блоге: 2
Завершенные тесты: 5
13.08.2017, 01:40  [ТС] #7
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
OCaml поддерживает глобальные переменные.
Хорошо что есть такая возможность, а использовать её или нет на совести разработчика.
Цитата Сообщение от korvin_ Посмотреть сообщение
Хороший язык, только, к сожалению, очень вяло развивается. Из более современных и живых альтернатив — F#
Да я читал, но мне не хотелось бы завязываться на .NET, а OCaml привлек более менее лаконичным синтаксисом(и плюшками которые вы перечислили) и то что он собирается в итоге в натив, другой вопрос я читал что у него что-то не так с много поточностью(хотелось бы узнать может уже все ок ибо источникам 3+ года).
Спасибо что отозвались было приятно почитать.
0
KolodeznyDiver
2491 / 1635 / 203
Регистрация: 01.06.2013
Сообщений: 3,330
Записей в блоге: 7
13.08.2017, 08:40 #8
Цитата Сообщение от korvin_ Посмотреть сообщение
сам посуди
угу.

Добавлено через 45 минут

Не по теме:

И, кстати.

0
pycture
1168 / 557 / 84
Регистрация: 20.09.2012
Сообщений: 1,811
Завершенные тесты: 3
20.08.2017, 17:14 #9
Цитата Сообщение от ntlinuxnt Посмотреть сообщение
Интересно было бы узнать что они думают
нормальная вещь.
по сути золотая середина между функциональщиной и императивщиной.
препроцессор camlp позволяет вытворять чудеса с синтаксисом https://camlp5.github.io/doc/htmlc/scheme.html
не сидел бы на нете, возможно занялся бы этим плотно.
f# ушел довольно сильно в бок. сравнивать их сейчас особо смысла нет.
1
20.08.2017, 17:14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru