Какие функциональные языки JVM хорошо поддерживаются IDE? (IDE: IDEA, Netbeans, Eclipse или аналогичные) - PullRequest
15 голосов
/ 28 июля 2011

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

Йети очень привлекателен для меня, потому что это просто и ML как, но я не могне установить хорошую IDE для этого.Я также не знаю, можно ли использовать сам язык в реальной жизни.

Groovy , JRuby и Jython кажутся очень зрелыми,но не очень функциональны. Scala является зрелым, но также OO и, по крайней мере, на Netbeans (и Eclipse, если я хорошо помню), он глючит.

" OCaML-Java " также OOи не готов к использованию (3 или 4 отдельных проекта).Я предполагаю, что в IDE он был бы еще менее готов к использованию.

Jaskell кажется мертвым.

Clojure кажется зрелым и действительно работаетхорошо в Intellij IDEA (плагин La Clojure), но я не уверен, что хочу написать более 2 парен на строку во время кодирования.

SISC и ABCL Iне пыталсяЯ думаю, что поддержка IDE отсутствует.

CAL (или Quark ... Blah ...) ведет к сайту SAP, и после этого мое терпение в поисках функциональных языков JVM закончилось.

Есть похожие вопросы, но не исчерпывающие.Например: Какой функциональный язык программирования предлагает лучшую поддержку в Eclipse?

Не существует ли какого-либо функционального языка JVM, который способен напрямую вызывать классы Java?Если бы Yeti имел поддержку IDE как Clojure (в IDEA), это было бы идеально для меня.

Спасибо

РЕДАКТИРОВАТЬ -----------------------------------

Я мог бы использовать Clojure + Scala в Intellij IDEA.Пример взаимодействия:

Код Scala

package a
class ScalaMain {
  def test = {
    "testing!"
  }
}

Код Clojure

(import '(a ScalaMain)) ;'
(def scalainstance (new ScalaMain))
(print "printing: " (. scalainstance test))

Впечатляющий!

Ответы [ 4 ]

9 голосов
/ 28 июля 2011

Scala + eclipse IDE (последняя версия) http://www.scala -ide.org / , похоже, становится все лучше и лучше. То же самое для плагина IntellijIDEA. В настоящее время Scala разрабатывает множество людей / компаний ... Не думаю, что они все используют только текстовые редакторы.

Я думаю, что на данный момент большинство языков FP - это Scala (мультипарадигма) и Clojure (чистый функционал). Что плохого в том, что Scala является OO?

Можно ожидать появления новых языков, таких как Kotlin и Ceylon, которые также имеют функциональные возможности, но они также будут OO, поэтому я думаю, что ваш единственный выбор сейчас между Scala и Clojure.

Из вашего списка вам не хватает языка Fantom. У него также есть функциональные возможности, но я думаю, что в нем отсутствует поддержка IDE (или, по крайней мере, он не обновлен до последних версий)

ОБНОВЛЕНИЕ: теперь есть основанная на затмениях IDE для языка программирования Fantom, которая выглядит действительно красиво. Вы можете найти его здесь: http://www.xored.com/products/f4/

4 голосов
/ 29 июля 2011

Clojure превосходен, когда дело доходит до совместимости Java + функциональность + наличие преимуществ от lisp.Хотя другие среды IDE поддерживают замыкание, emacs работает очень хорошо, за исключением того, что требуется время, чтобы изучить и привыкнуть к способу кодирования emacs.

2 голосов
/ 15 января 2012

История взаимодействия Clojure просто фантастическая.Основным преимуществом clojure является то, что все его коллекции реализуют интерфейсы, которые входят в API коллекций Java, вам не нужно адаптировать коллекции Clojure или копировать их в коллекции Java, чтобы передавать их в код Java, пока код Java не делает этого.изменить их содержание.Обратное также верно, коллекции Java могут использоваться со многими полезными функциями Clojure, такими как map reduce filter и т. Д. ... Я знаю кого-то, кто отказался от Scala для Clojure по этой причине среди других.

Также легко написать код взаимодействия Java в Clojure, в котором используется меньше символов, чем в эквивалентном коде Java.

например,

blondie.callMe().callMe().any().any().time();

(-> blondie .callMe .callMe .any .any .time)

Требуется некоторое привыкание к, но если вы думаете об этом, это не так уж и отличается.Сравните следующую строку кода Java с Clojure, я думаю, вы поймете и то, и другое.

System.out.println("Hello World");

(println "Hello World")

Если исключить квалификацию System.out и дополнительную точку с запятой в примере Java, единственное реальное отличие состоит в том, чточто теперь у парня есть вызов функции.Сумасшедший разговор!

Он отличается, но он может быть не таким плохим, как вы думаете, и если вы попробуете, вы можете найти неоспоримые преимущества в языке.Если вам нужна поддержка IDE, проверьте LaClojure в IntelliJ или Enclojure от Netbeans.Я знаю, что Enclojure предлагает хорошую поддержку завершения, которая, на мой взгляд, в основном полезна, только если вы имеете дело с большим количеством Java.Работа без сети в Clojure работает нормально.

1 голос
/ 15 января 2012

Фреге теперь также имеет (все еще очень простой) плагин Eclipse .

...