Ответ 1
Страница Jean-Christophe Filliâtre содержит множество программ и библиотек в OCaml.
После изучения базового синтаксиса чтение некоторого нетривиального кода - это быстрый способ изучения языка. Мы также можем узнать, как создавать библиотеку/программное обеспечение во время чтения кода других.
У меня есть следующие списки.
A Chess программа в OCaml от Tomek Czajka.
Хэл Дауме написал несколько библиотек для машинного обучения в Ocaml. Включая деревья принятия решений, логистическую регрессию и SVM. Все они представляют собой код с почти производственным качеством.
A Программа шахматного анализа в F # в Microsoft Research.
Вышеупомянутые три являются моими фаворитами. Будете ли вы предлагать другие источники? Программное обеспечение с открытым исходным кодом общего назначения является хорошим, специализированным открытым исходным кодом, таким как три, которые я перечисляю здесь, еще более приветствуются.
Страница Jean-Christophe Filliâtre содержит множество программ и библиотек в OCaml.
Одним из менее хорошо рассмотренных аспектов OCaml является система модулей более высокого порядка. Библиотека ocamlgraph - отличный пример использования этой языковой функции.
Вы также можете прочитать исходный код OCaml в моем проекте здесь, но не с открытым исходным кодом. Тем не менее, он не обновлялся в течение нескольких лет, и вы, вероятно, сегодня можете сделать намного лучше!
MLDonkey был ранним клиентом совместного доступа к файлам, в котором когда-то было сотни тысяч пользователей. Это сильно параллельное приложение с открытым исходным кодом, полностью написанное в OCaml, весом около 171 000 строк кода.
Unison файл-синхронизатор - другое приложение-приложение с открытым исходным кодом, полностью написанное в OCaml, весом в 24 000 строк кода. Это было также первое популярное приложение, написанное в производном ML, для использования асинхронного ввода-вывода. Таким образом, весь код F #, выполняющий async сегодня, по существу получен из него.
FFTW является генератором кода для быстрых преобразований Фурье (БПФ), по существу очень специализированной формы оптимизирующего компилятора, который широко приняты и лицензированы для коммерческого использования, например в основе MATLAB. Написано в основном в OCaml с довольно небольшим количеством C и весом в 14 000 строк кода OCaml.
Вы также можете прочитать исходный код Hevea и ANT, поскольку они являются довольно классическими областями приложений для OCaml, но также приложениями с качеством продукции с тысячами пользователей.
Я не могу придумать какой-либо код F # с открытым исходным кодом. Там очень мало и, как правило, очень плохое качество. Большинство из них читается как Haskell.; -)
Janes Street выпустила несколько библиотек здесь. Фактически они используют OCaml в отраслевой среде. Во всяком случае, я бы проверить их.
Ознакомьтесь с этими сериями записей в блоге по проблеме Bookworm, они беззаботны и хорошо показывают F # multiparadigm-ness. Последний выглядит как "функциональный".
Ну, Unison мне рекомендовали взглянуть, а также решить различные проблемы из Project Euler, но лично я больше делаю, написав свои собственные практические программы, поэтому я, вероятно, буду адаптировать один из них в OCaml, чтобы посмотреть, как это происходит.
У вас есть источник стандартной библиотеки ocaml, которая находится в o'caml.
Я думаю, вы уже посмотрели на него, но горб камма тоже хороший источник: Здесь