Подтвердить что ты не робот

Какие очень большие проекты с функциональными языками доступны?

Начнем с того, что я фактически продаюсь на "всей функциональной языковой вещи". Мне приходит в голову, что в течение многих лет я занимался главным образом функциональным программированием на Java. Но я немного теряю, как начать большое функциональное приложение. Я хотел бы увидеть источник и построить структуру большого проекта (OSS или что-то еще), чтобы я мог видеть, как модульность лучше всего обрабатывать в такой среде.

Контекст моего вопроса заключается в том, что я хочу запустить большой проект JVM, и сейчас я думаю о выборе сочетания Java/ Groovy или Scala/Groovy. Я не хочу идти с миром Scala/Groovy, если я не пойду в функциональном направлении, потому что мне не нравится Scala для программирования OO (совершенно другая тема). Это означает, что вы избегаете таких вещей, как каркасы DI, AspectJ и т.д. (Я знаю, что могу эмулировать/выполнять/одобрять эти вещи с функциональным программированием... но это не имеет значения здесь.) Я обеспокоен тем, что отсутствие очень больших общедоступных проекты, использующие эти языки, объясняются общим доводом о том, что они действительно бедны для крупных проектов, что было бы настоящим позором...

Итак, я спрашиваю, какие крупные проекты fp (скажем, 20K + строк) вы следуете? Я был бы очень рад услышать о любом запуске на языке JVM. Особенно, если вы чувствуете, что они эффективно обрабатывают модульность.

4b9b3361

Ответ 1

В эти дни я пытаюсь найти Erlang, на что влияет Scala. Мне нравится изучать исходный код yaws, который является высокопроизводительным http-сервером, и Wings 3D, разработчик подразделения. Очень образованный, лучший способ изучить новый язык - прочитать его.

Ответ 2

Распределенная система управления версиями darcs является чистым haskell, то есть чистым и ленивым fp. По строкам кода это может показаться не большим проектом, но имейте в виду, что синтаксис haskell очень плотный.

Ответ 3

В Emacs есть много Lisp, но написано в очень императивном стиле. GHC - это большой проект, написанный в Haskell, и, конечно, компилятор OCaml и т.д., Написаны в OCaml.

Ответ 4

В Scala есть две большие операции с открытым исходным кодом, о которых я знаю: Lift и ESME (Apache Incubator).

Хотя кажется, что новый язык, связанный с Google Noop, написан в Scala до сих пор. Это может измениться, когда Noop станет достаточно стабильным, чтобы скомпилировать себя.

Ответ 5

Xmonad - это оконный менеджер, написанный в Haskell, у них очень подробный tutorial для написания расширений.

Ответ 6

Он написан в OCaml и поэтому не запускается на JVM, но Frama-C - это проект на 200000+ линий структура статического анализа для C с архитектурой подключаемого модуля.

Frama-C использует динамическую загрузку native где доступно, но плагины также могут быть загружены динамически, как байт-код или связанный статически, если вы хотите перекомпилировать все это.

Дополнительная информация, включая исходный код, http://frama-c.com/. Учитывая характер вашего вопроса, вы также можете оценить эта статья в ICFP 09

Ответ 7

Scala/Подъем: Novell Vibe: http://vibe.novell.com/ Автор: twitter.com/djspiewak

Clojure: Clj/Sys - Сеть машинного обучения Автор: twitter.com/bradfordcross

Clojure Раунд-прогнозная рамочная система для отказа от корзины Автор: Амит Ратхор (Clojure в действии)

Ответ 8

Я знаю большие порции Emacs и в основном все Maxima записаны в Lisp. Они не работают в JVM, но они являются главными примерами, которые я могу придумать для больших, хорошо зарекомендовавших себя и широко используемых и оцененных приложений, написанных на функциональном языке.

Ответ 9

Citrix выпустила инструментарий Xen API в качестве открытого программного обеспечения здесь в прошлом году. IIRC, то есть сотни тысяч строк кода OCaml, который был разработан 18 разработчиками с 2006 по 2010 год.

Согласно эта страница:

  • MLDonkey peer-to-peer-клиент равен 171kLOC кода OCaml.

  • Unison - 24kLOC кода OCaml.

  • FFTW - это 14kLOC кода OCaml.

  • Hevea - 12kLOC кода OCaml.

  • Darcs составляет 25kLOC кода Haskell.

Я обеспокоен тем, что отсутствие очень крупных публично видимых проектов с использованием этих языков объясняется общим доводом о том, что они действительно бедны для крупных проектов, что было бы настоящим позором...

Наоборот, мы обнаружили, что OCaml намного лучше подходит для крупных проектов, в которых доминируют такие языки, как Java или С#, где невозможность выражать продуктивные высокоуровневые аспекты кода приводит к обширным проблемам с вырезанием и вставкой и обслуживанием. На самом деле, мне в настоящее время приходится переписывать миллионы строк С++ в F # именно потому, что обслуживание стало непомерно дорогостоящим.