Hio那里有Scala人,我实际上正在写我的硕士论文,我必须在Scala中实现一种安全类型的语言。所以这意味着我必须添加注释来指定Scala中变量和其他编程结构的特殊权限级别。添加它的想法来自Jif(一种真正的安全类型语言http://www.cs.cornell.edu/jif/)和FlowCaml(http://www.normalesup.org/~simonet/soft/flowcaml/)。我仍然需要检查这些语言如何添加其安全扩展。
我和我的顾问谈过,他提出了三种可能性,我可以在Scala中实现这个功能:
如果您对如何实施有其他想法请告诉我,如果您对上述方法有利弊请告诉我。我相信我会在这个项目之后学习Scala(我熟悉Java和Ruby)。
问候
Matthias Guenther
答案 0 :(得分:1)
我认为你的问题的答案取决于你是否正在寻找一个合理的语言添加,或者你只是想要一些可能被程序员规避但仍然可能有用的东西。既然你提到了Jif和FlowCaml,我认为你想要采用合理的方式并为你的语言提供保证。然后我认为没有太多选择,只能在Scala之上创建自己的语言结构,并为那些提供新的前端。
我非常怀疑您是否可以Peng Li and Steve Zdancewic或Alejandro Russo的方式将安全性实现为库。原因是Scala可以在任何地方产生副作用,这几乎破坏了您可以尝试执行的任何安全保障。
祝你好运!答案 1 :(得分:1)
这绝对是编译器插件的一项工作:编写一个允许注释进一步细化可能的子类型关系的插件是相当简单的,至少在简单的情况下是这样。
您可以合理地确信编译器插件API在硕士论文的生命周期内保持稳定,您应该调查scala.tools.nsc.symtab.AnnotationCheckers和google,例如实现编译时间检查的插件(非 - )nullability(即T @NonNull<:T,但不是T<:T @ NonNull),它在结构上类似于最简单的非平凡安全类型方案。