首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪些JVM功能语言很好地支持IDE?(IDE: IDEA,Netbeans,Eclipse等)

哪些JVM功能语言很好地支持IDE?(IDE: IDEA,Netbeans,Eclipse等)
EN

Stack Overflow用户
提问于 2011-07-28 09:58:27
回答 4查看 1.9K关注 0票数 15

我花了很多时间寻找一种功能语言,可以无缝地访问Java遗留代码(Weka代码)。自动完成导入的Java类方法将是很好的。我将展示我的印象,如果我错了,请纠正我。

Yeti对我很有吸引力,因为它很简单,而且ML-like,但是我不能为它设置一个很好的IDE。我也不知道语言本身是否已经可以在现实生活中使用。

GroovyJRubyJython似乎非常成熟,但它们并不是真正的功能。Scala是成熟的,但它也是面向对象的,至少在Netbeans (如果我还记得的话)上是错误的。

"OCaML-Java“也是面向对象的,没有做好使用的准备(3或4个单独的项目)。我想,在IDEs中,它将更不容易使用。

Jaskell似乎已经死了。

Clojure 看上去很成熟,在Intellij ( line插件)中工作得很好,但我不确定在编写代码时是否希望每行编写两个以上的parens。

SISCABCL --我没有尝试。我认为不支持IDE。

CAL (或夸克.等等.)语言导致SAP站点,在那之后,我对功能JVM语言的耐心就结束了。

也有类似的问题,但不全面。例如:哪种函数编程语言在Eclipse中提供了最好的支持?

一些能够直接调用java类的JVM函数语言是否缺失了?如果YetiClojure那样提供IDE支持(在思想上),那么它对我来说将是完美的。

谢谢

编辑

我可以在Intellij中使用Clojure+Scala。互操作性示例:

Scala码

代码语言:javascript
复制
package a
class ScalaMain {
  def test = {
    "testing!"
  }
}

Clojure代码

代码语言:javascript
复制
(import '(a ScalaMain)) ;'
(def scalainstance (new ScalaMain))
(print "printing: " (. scalainstance test))

太壮观了!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-07-28 10:25:11

Scala + eclipse (最新版本) http://www.scala-ide.org/似乎越来越好。IntellijIDEA插件也是如此。现在有很多人/公司正在开发Scala.我不认为他们都只使用文字编辑。

我认为目前大多数FP语言是Scala (多范式)和Clojure (纯函数式),Scala作为OO有什么问题?

您可以预期会出现新的语言,比如Kotlin和Ceylon,它们也具有功能特性,但它们也是OO,所以我认为您现在唯一的选择是Scala和Clojure。

从你的名单上你错过了范汤姆的语言。它也有功能特性,但我认为它缺乏IDE支持(或者至少没有更新到最新版本)。

更新:现在有一个基于eclipse的IDE,用于扇汤姆编程语言,看起来非常不错。你可以在这里找到它:http://www.xored.com/products/f4/

票数 10
EN

Stack Overflow用户

发布于 2011-07-29 04:21:21

Clojure在java互操作性+Functional+方面非常出色,它具有lisp的优点。虽然其他IDE支持clojure,但emacs的工作非常好,只是学习和习惯emacs的编码方式需要时间。

票数 4
EN

Stack Overflow用户

发布于 2012-01-15 02:48:44

克洛尔的互操作故事太棒了。clojure的一个主要优点是,它的集合都实现了Java集合API中的接口,只要Java代码不修改它们的内容,您就不必调整Clojure集合或将它们复制到Java集合中以将它们传递给Java代码。相反,Java集合可以与许多有用的Clojure函数一起使用,如mapreducefilter等.我知道有人因为这个原因而放弃Scala而选择Clojure,还有其他原因。

在Clojure中编写Java互操作代码也很容易,它使用的父代码比在等效Java代码中使用的更少。

例如:

代码语言:javascript
复制
blondie.callMe().callMe().any().any().time();

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

这需要一些习惯,但如果你想一想,这并没有什么不同。比较以下一行Java代码V.S.Clojure,我想您会理解这两种情况的。

代码语言:javascript
复制
System.out.println("Hello World");

(println "Hello World")

除去System.out的限定和Java示例中的附加分号,唯一真正的区别是paren现在处于函数调用的前面。疯狂的谈话!

这是不同的,但它可能没有你想象的那么糟糕,如果你试一试,你可能会在语言中发现引人注目的好处。如果您想要IDE支持,请查看IntelliJ中的IntelliJ或Netbeans中的Enclojure。我知道Enclojure提供了良好的完成支持,我认为只有在您处理大量Java时才能真正使用它。在Clojure中不使用网络执行工作很好。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6857128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档