Какие функциональные языки 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.