小编Ily*_*hin的帖子

参数多态性与Ad-hoc多态性

我想了解参数多态性之间的关键区别,例如Java/Scala/C++语言中泛型类/函数的多态性和Haskell类型系统中的"ad-hoc"多态性.我熟悉第一种语言,但我从未使用过Haskell.

更确切地说:

  1. 如何在Java中的类型推断算法与Haskell中的类型推断不同?
  2. 请给我一个例子,说明可以用Java/Scala编写的东西,但不能用Haskell编写(根据这些平台的模块化特性),反之亦然.

提前致谢.

java polymorphism haskell types type-inference

52
推荐指数
2
解决办法
2万
查看次数

学习渐进式编译设计

有很多关于创建编译器的书籍和文章,它们一次完成所有编译工作.那些IDE使用的增量编译器/解析器的设计呢?我熟悉第一类编译器,但我从未使用过第二类编译器.

我试图阅读一些关于Eclipse Java开发工具的文章,但是他们描述了如何使用完整的基础结构(即API)而不是描述内部设计(即它如何在内部工作).

我的目标是为我自己的编程语言实现增量编译器.你会推荐哪些书籍或文章?

parsing compilation incremental-compiler

26
推荐指数
1
解决办法
1703
查看次数

Java"新型变量"

What does "fresh type variable" mean in the JLS Conversions and Promotions chapter?

java jls

12
推荐指数
1
解决办法
1093
查看次数

用JavaScript编写的Java解析器

我正在寻找用JavaScript语言编写的Java源代码解析器的实现.你知道任何?

javascript java parsing compilation

10
推荐指数
2
解决办法
3672
查看次数

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)

java garbage-collection jvm anonymous-class

7
推荐指数
1
解决办法
1165
查看次数

ScalaJS:如何将String转换为String?

我们假设我有一个字符串列表:List[String].我想将它转换为JavaScript Strings的可互操作的JavaScript数组:js.Array[js.String].怎么做?

javascript scala scala.js

6
推荐指数
1
解决办法
522
查看次数

IntelliJ IDEA包装单行匿名类的设置

如何设置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)

intellij-idea

3
推荐指数
2
解决办法
5784
查看次数

Scala/Java子目录,名称中带有点

由于某些原因,我需要在我的项目中使用包的长名称.喜欢:

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一起运作良好.但我不确定这种做法是否会导致进一步的问题?也许在不同类型的类加载器等不同的环境中?

java scala classloader sbt

2
推荐指数
1
解决办法
488
查看次数

IntelliJ IDEA Scala插件关闭

我正在使用用于IntelliJ IDEA的Scala插件,我的项目有几千行源代码.

不幸的是,当我输入代码时,IDE经常冻结(即代码完成等).我试图关闭检查,但没有效果.

有没有办法关闭所有插件的功能,使用它作为语法高亮显示和构建工具?

plugins scala intellij-idea

1
推荐指数
1
解决办法
937
查看次数