Какой хороший функциональный язык для создания веб-сервиса?

Есть ли функциональный язык, который имеет хорошую поддержку и инструменты для создания веб-сервисов? Я смотрел на Scala (который компилируется в JVM и может использовать библиотеки Java) и F # (это .NET), но они молоды и имеют некоторую неэффективность. Scala, в частности, не поддерживает исключение хвостового вызова, за исключением саморекурсивных функций, что ограничивает виды композиции, которые вы можете сделать (это фундаментальное ограничение JVM). F # является очень новым и пока не полностью поддерживается, что делает его более рискованным, чем более обычный язык.

Возможно ли создать веб-сервис с использованием Haskell, ML или любого другого более традиционного функционального языка, или было бы лучше пойти с Scala или F #? Любые другие предложения?

Ответ 1

Если .NET является вариантом для платформы, не уменьшайте F # из-за своей молодости. По мере приближения к становлению официальным продуктом становится все лучше и лучше интегрироваться с Visual Studio и наследует все, что дает .NET.

Существует также активная и доступная поддержка как Microsoft, так и энтузиазма сообщества.

Ответ 2

Ocaml имеет Ocsigen/Eliom... Я не могу сказать, что я использовал его. Это также на ранних этапах.

Ответ 3

Haskell:

Взгляните на этот вопрос: Каков самый простой способ написания веб-приложений в Haskell?

В принципе, WASH, HAppS и Janus являются тремя большими в Haskell на данный момент. Мое голосование за HAppS, у которого в настоящий момент есть лучший tutorial.

Существует также HSP, но я не смотрел на него или не думал об этом недавно.

Ответ 4

Erlang, Yaws. Это веселый, мощный язык, масштабируется очень хорошо и делает 100 или 1000 процессов безопасными и легкими. И весело.

(Я также думаю, что это довольно.)

Ответ 5

Прочтите это введение на F # и ASP.NET, который даст вам хорошее начало.

В Интернете есть несколько примеров, в которых F # используется в веб-приложениях. Одним из них является, например, автозаполнение Томаса Петричека, которое он построил как иллюстративное приложение к своей статье " F # Web Tools: приложения Ajax упрощены". Я тоже использовал F # как часть веб-сервиса, и я гарантирую, что он хорошо работает:).

Ответ 6

Если вы делаете это для удовольствия, а не для какой-либо надежности или рабочего места, вы можете исследовать ARC. Это незавершенный, прогрессирующий язык, с его преимуществами и недостатками.

отказ от ответственности: не связан с ARC или Paul Graham

Ответ 8

Вы можете подумать о Clojure - это очень новый язык, но выглядит очень перспективным для масштабируемых параллельных приложений и имеет преимущество очень хорошей интеграции JVM и доступа ко всем библиотекам Java (точно так же, как Scala).

Clojure также имеет довольно много конструктивных элементов, которые обходят проблему хвостовой рекурсии (специальная конструкция recur, многие основные функции реализованы итеративно и т.д.).

Ответ 9

Хотя я не могу рекомендовать его, потому что я все еще играю с ним, Эрланг очень силен.

Ответ 10

Я должен согласиться с рекомендацией для Clojure. Я только что закончил нагрузочный тест службы записанной в Clojure, которая поддерживала 80 исходящих сообщений активности в секунду на веб-сервере Clojure на примере экземпляра m1.medium EC2.

Ответ 11

В предыдущих версиях функциональных языков есть такие инструменты, как Ocsigen (для OCaml) и HApps (для Haskell), но у них практически нет пользователей: они полностью непроверенные.

Напротив, Scala и F # основываются на очень хорошо проверенном коде Java и .NET. В частности, F # был очень развит Microsoft за последний год, потому что он разрабатывается. Никакой другой функциональный язык никогда не получал такого уровня поддержки, и, следовательно, F # уже очень полезен (и намного опережает такие языки, как Haskell с точки зрения средств разработки).