Какие функциональные языки JVM хорошо поддерживаются IDE? (IDE: IDEA, Netbeans, Eclipse или тому подобное)

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

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

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

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

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

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

SISC и ABCL Я не пытался. Я думаю, что нет поддержки 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))

Spectacular!

Ответы

Ответ 1

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

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

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

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

UPDATE: теперь есть среда IDE для Eclipse для языка программирования Fantom, который выглядит очень красиво. Вы можете найти его здесь: http://www.xored.com/products/f4/

Ответ 2

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

Ответ 3

Clojure история interop - это фантастика. Основной выигрыш с 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 v.s. Clojure, я думаю, вы поймете и то, и другое.

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

(println "Hello World")

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

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

Ответ 4

Теперь у Frege также есть (все еще очень простой) плагин eclipse.