2010-01-07 2 views
25

После изучения базового синтаксиса чтение некоторого нетривиального кода - это быстрый способ изучения языка. Мы также можем узнать, как создавать библиотеку/программное обеспечение во время чтения кода других.Хорошие проекты для изучения OCaml и F #

У меня есть следующие списки.

  1. Chess программа в OCaml по Tomek Czajka.

  2. Hal Daumé написал several machine learning libraries в Ocaml. Включая деревья принятия решений, логистическую регрессию и SVM. Все они представляют собой код с почти производственным качеством.

  3. A Chess Game Analysis программа в F # в Microsoft Research.

Эти три являются моими фаворитами. Будете ли вы предлагать другие источники? Программное обеспечение с открытым исходным кодом общего назначения является хорошим, специализированным открытым исходным кодом, таким как три, которые я перечисляю здесь, еще более приветствуются.

+0

http://stackoverflow.com/questions/383848/f-open-source-projects –

+0

@Mauricio Спасибо за комментарий. Я думаю, что эти два потока имеют определенную разницу, так как здесь языки Ocaml и F #, а не одиночные F #. И список не только для open source, но и для некоторых кодовых сиппетов или акадмических кодов. –

+0

Программное обеспечение Hal Daumé было переведено на [http://www.umiacs.umd.edu/~hal/software.html](http://www.umiacs.umd.edu/~hal/software.html). –

ответ

2

Ну, Unison было рекомендовано мне взглянуть на, а также для решения различных проблем, с Project Euler, но лично я сделать больше, написав свои собственные практических программ, так что я, вероятно, адаптируя один из них в OCaml, чтобы посмотреть, как это происходит.

1

У вас есть источник стандартной библиотеки ocaml, который находится в o'caml.

Я думаю, вы уже смотрели на него, но КАМЛ горба является хорошим источником слишком: Here

+1

Стандартная библиотека OCaml не особенно хорошо написана кодом OCaml. –

5

Джейнс Street выпустила несколько библиотек here. Фактически они используют OCaml в отраслевой среде. Во всяком случае, я бы проверить их.

3

Ознакомьтесь с этими сериями записей в блоге по проблеме Bookworm, они беззаботны и хорошо показывают многопартийность F #. Последний выглядит как «функциональный».

+0

Крис Смит и Брайан Макнамара могут съесть мои шорты ... –

11

Один из менее хорошо покрыты аспектов OCaml является модульная система высшего порядка. Библиотека ocamlgraph является прекрасным примером использования этой языковой функции.

Возможно, вам также понравится исходный код OCaml для моего проекта HLVM. Исходный код из моей книги OCaml для ученых (2005) свободно доступен here, но не с открытым исходным кодом. Тем не менее, он не обновлялся в течение нескольких лет, и сегодня вы, вероятно, можете сделать гораздо лучше!

MLDonkey был ранним клиентом обмена файлами, который когда-то имел сотни тысяч пользователей. Это сильно параллельное приложение с открытым исходным кодом, полностью написанное в OCaml, весом около 171 000 строк кода.

Файл синхронизации Unison - это еще одно приложение-приложение с открытым исходным кодом, полностью написанное в OCaml, весом в 24 000 строк кода. Это было также первое популярное приложение, написанное в производном ML, для использования асинхронного ввода-вывода. Таким образом, весь код F #, выполняющий async сегодня, по существу получен из него.

FFTW - генератор кода для быстрых преобразований Фурье (БПФ), по существу, очень специализированная форма оптимизирующего компилятора, которая широко применяется и лицензируется для коммерческого использования, например. в основе MATLAB. Написано в основном в OCaml с довольно небольшим количеством C и весом в 14 000 строк кода OCaml.

Вы также можете прочитать исходный код Hevea и ANT, так как это довольно классические области приложений для OCaml, но также и приложения с качеством продукции с тысячами пользователей.

Я не могу придумать, какой код с открытым кодом F # рекомендовать. Там очень мало и, как правило, очень плохое качество. Большинство из них читается как Haskell. ;-)