Глядя на разные проекты ocaml, я не вижу встроенных потоков в языке когда-либо использовал. Даже в недавней книге Real World Ocaml потоки вообще не упоминаются, что странно.
В чем причина этого? Это потому, что Lwt или Core заменяют их?
Глядя на разные проекты ocaml, я не вижу встроенных потоков в языке когда-либо использовал. Даже в недавней книге Real World Ocaml потоки вообще не упоминаются, что странно.
В чем причина этого? Это потому, что Lwt или Core заменяют их?
Я думаю, что в значительной степени ответил на этот вопрос в этом отчете об ошибке.
Потоки были неплохими с поддержкой синтаксиса camlp4, без него их практически невозможно использовать. Итак, это было в давно минувшие времена (хотя теоретически это все еще можно использовать). Согласно справке Drup, они будут даже удалены в ближайшем будущем (в этом году) из основного языка и, предположительно, будут перемещены в отдельную библиотеку.
Все это не означает, что с потоками как со структурой данных что-то не так. Это по-прежнему очень ценный метод, используемый во многих проектах OCaml, просто они используют разные библиотеки, которые его реализуют. Есть Core Sequence
, Batteries Enum
, пакеты gen
и sequence
Саймона Круанеса, пакет fstream
Джозефа Абрахамсона и многие другие.
gen
и sequence
. ;) 13.05.2015 Потоки можно использовать для «ленивых вычислений» в OCaml, тем более, что OCaml — это активный язык, есть определенно полезные случаи, когда желательны ленивые вычисления (например, в Haskell).
Цитата из лекции о стримах в Корнелле ,
Потоки действительно полезны в реальной жизни. Некоторые приложения:
- компиляторы читают исходный файл из текста
- сетевые розетки
- обработка аудио и видео сигналов
- распознавание голоса
- аппроксимация решений уравнений сходящимися рядами
В предоставленном справочнике также используются потоки для ленивого вычисления простых чисел, что очень и очень быстро по сравнению с обычным способом вычисления больших простых чисел с использованием решета Эратосфена. Поэтому я чувствую, что потоки определенно имеют свое место в языке, поскольку он допускает ленивую оценку в OCaml.
Потоки использовались моим профессором для объяснения концепции ленивых вычислений в нетерпеливом языке, причина, по которой она не упоминается в реальном мире OCaml, может быть в том, что сам язык нетерпелив, а потоки не параллельны эта концепция и что потоки не могут быть многопоточными. (это, впрочем, предположение)