我想了解参数多态性之间的关键区别,例如Java/Scala/C++语言中泛型类/函数的多态性和Haskell类型系统中的"ad-hoc"多态性.我熟悉第一种语言,但我从未使用过Haskell.
更确切地说:
提前致谢.
有很多关于创建编译器的书籍和文章,它们一次完成所有编译工作.那些IDE使用的增量编译器/解析器的设计呢?我熟悉第一类编译器,但我从未使用过第二类编译器.
我试图阅读一些关于Eclipse Java开发工具的文章,但是他们描述了如何使用完整的基础结构(即API)而不是描述内部设计(即它如何在内部工作).
我的目标是为我自己的编程语言实现增量编译器.你会推荐哪些书籍或文章?
What does "fresh type variable" mean in the JLS Conversions and Promotions chapter?
我正在寻找用JavaScript语言编写的Java源代码解析器的实现.你知道任何?
让我们假设某些类是不可访问的,但是该类生成的另一个匿名类是可访问的.可以通过垃圾收集器删除第一个吗?
例:
class Outer {
public Object getInner() {
return new Object() {};
}
}
...
Outer outer = new Outer();
Object inner = outer.getInner();
// Could the "outer" instance be removed here considering that "inner" is using below?
Run Code Online (Sandbox Code Playgroud) 我们假设我有一个字符串列表:List[String].我想将它转换为JavaScript Strings的可互操作的JavaScript数组:js.Array[js.String].怎么做?
如何设置IntelliJ IDEA以防止在自动重新格式化(CTRL+ ALT+ L)期间将在一行上声明的匿名类拆分为多行?
例如,防止分裂
x = foo(new Boo() {});
Run Code Online (Sandbox Code Playgroud)
分为两行:
x = foo(new Boo() {
});
Run Code Online (Sandbox Code Playgroud) 由于某些原因,我需要在我的项目中使用包的长名称.喜欢:
com.example.foo.bar.bazz.anotherlongsubpart.andfinallytheactualpackagname
Run Code Online (Sandbox Code Playgroud)
因此,考虑到名称约定(至少我所知道的Java中的名称约定),我必须创建适当的目录结构,用斜杠替换点:
com/example/foo/bar/bazz/anotherlongsubpart/andfinallytheactualpackagname
Run Code Online (Sandbox Code Playgroud)
至于我,它看起来太丑了:)所以我尝试用斜线替换只有点的部分:
com.example.foo.bar.bazz.anotherlongsubpart/andfinallytheactualpackagname
Run Code Online (Sandbox Code Playgroud)
换句话说,我在这里有一个包名为"com.example.foo.bar.bazz.anotherlongsubpart"的包/目录,另一个包含"andfinallytheactualpackagname".这样做是否合法?我尝试使用Simple Build Tool编译所有这些东西,并在其上运行我的单元测试.它运作良好.正如我用普通的方式用斜线命名.
因此,我的实验表明它至少与SBT一起运作良好.但我不确定这种做法是否会导致进一步的问题?也许在不同类型的类加载器等不同的环境中?
我正在使用用于IntelliJ IDEA的Scala插件,我的项目有几千行源代码.
不幸的是,当我输入代码时,IDE经常冻结(即代码完成等).我试图关闭检查,但没有效果.
有没有办法关闭所有插件的功能,使用它作为语法高亮显示和构建工具?
java ×5
scala ×3
compilation ×2
javascript ×2
parsing ×2
classloader ×1
haskell ×1
jls ×1
jvm ×1
plugins ×1
polymorphism ×1
sbt ×1
scala.js ×1
types ×1