$ su
1605 / 520 / 97
Регистрация: 18.11.2010
Сообщений: 2,807
Записей в блоге: 2
1

OCaml

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

Author24 — интернет-сервис помощи студентам
Собственно заинтересовал сабж, что думаете, кто использовал? Я так пробежался чем то на haskell похож, но как по мне проще, может я не тот раздел выбрал, но тут он более живой, интересно услышать ваши мнения. Заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.08.2017, 00:15
Ответы с готовыми решениями:

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

Вычисление суммы элементов списка, если они образуют арифметическую прогрессию [OCaml]
"Вычисления Суммы элементов списка, если они образуют арифметическую прогрессию". Если кто...

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


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

Или воспользуйтесь поиском по форуму:
8
Модератор
5046 / 3275 / 526
Регистрация: 01.06.2013
Сообщений: 6,803
Записей в блоге: 9
12.08.2017, 15:07 2
Цитата Сообщение от ntlinuxnt Посмотреть сообщение
чем то на haskell похож
На F# похож ещё больше. F# - это, можно сказать, "OCaml .NET".
Это всё языки с ML-овским синтаксисом.
Когда я его "щупал", года 3-4 назад, был ещё менее дружествен к Windows чем Haskell.
korvin_ и pycture могут знать больше.
1
$ su
1605 / 520 / 97
Регистрация: 18.11.2010
Сообщений: 2,807
Записей в блоге: 2
12.08.2017, 19:20  [ТС] 3
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
к Windows
На сколько я знаю сейчас нормально ставится вместе с пакет менеджером OPAM.
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
korvin_ и pycture могут знать больше.
Интересно было бы узнать что они думают.
1
Эксперт функциональных языков программированияЭксперт Java
4485 / 2720 / 485
Регистрация: 28.04.2012
Сообщений: 8,585
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
Модератор
5046 / 3275 / 526
Регистрация: 01.06.2013
Сообщений: 6,803
Записей в блоге: 9
12.08.2017, 21:44 5
Цитата Сообщение от ntlinuxnt Посмотреть сообщение
На сколько я знаю сейчас нормально ставится вместе с пакет менеджером OPAM.
О! Когдато стон стоял на тему "когда же сделают opam под win не через cygwin".
Цитата Сообщение от korvin_ Посмотреть сообщение
если функция ссылается на такой внешний для неё x, из сигнатуры функции об этом не узнать
Т.е. OCaml поддерживает глобальные переменные.
1
Эксперт функциональных языков программированияЭксперт Java
4485 / 2720 / 485
Регистрация: 28.04.2012
Сообщений: 8,585
12.08.2017, 23:54 6
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Т.е. OCaml поддерживает глобальные переменные.
сам посуди
2
$ su
1605 / 520 / 97
Регистрация: 18.11.2010
Сообщений: 2,807
Записей в блоге: 2
13.08.2017, 01:40  [ТС] 7
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
OCaml поддерживает глобальные переменные.
Хорошо что есть такая возможность, а использовать её или нет на совести разработчика.
Цитата Сообщение от korvin_ Посмотреть сообщение
Хороший язык, только, к сожалению, очень вяло развивается. Из более современных и живых альтернатив — F#
Да я читал, но мне не хотелось бы завязываться на .NET, а OCaml привлек более менее лаконичным синтаксисом(и плюшками которые вы перечислили) и то что он собирается в итоге в натив, другой вопрос я читал что у него что-то не так с много поточностью(хотелось бы узнать может уже все ок ибо источникам 3+ года).
Спасибо что отозвались было приятно почитать.
0
Модератор
5046 / 3275 / 526
Регистрация: 01.06.2013
Сообщений: 6,803
Записей в блоге: 9
13.08.2017, 08:40 8
Цитата Сообщение от korvin_ Посмотреть сообщение
сам посуди
угу.

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

Не по теме:

И, кстати.

0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
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
Copyright ©2000 - 2024, CyberForum.ru