我慢慢爱上了Erlang,只有一个很大很大的问题。
我是Standart ML和ocaml等语言的铁杆粉丝,它们具有强大的静态类型检查功能。
在erlang中有没有一种好的、干净的方式来引入一些静态类型检查。我正在查看-type和-spec注释。
有没有人有好的解决方案?
发布于 2011-12-15 01:40:37
我去过那里!我喜欢OCaml和Erlang,并且经常使用它们。
当我开始使用Erlang时,我已经有了多年的OCaml使用经验。我花了几周的时间来适应编译器中没有静态类型检查器的事实。但在那之后,疼痛完全消失了。
在某种程度上,不使用类型检查器是一项值得进行的工作。对我来说,这是一次启发性的经历,真的让我成为了一名更好的程序员。
但是,Erlang有一个外部静态类型检查器,名为Dializer。我发现它非常有用。它的问题是你需要单独调用它,而且它很慢。偶尔运行一次(例如,在提交代码之前或作为自动化构建的一部分)效果很好。我从来没有尝试过在每次编译之后运行它,因为它太分散了,以至于不能等到它完成。
发布于 2011-12-14 23:52:27
检查Dialyzer工具
透析器是一种静态分析工具,可识别软件差异,如definite errors,在单个Erlang模块或整个(组)应用程序中由于某些编程错误、不必要的测试等而变得无效或无法访问的代码。
发布于 2014-01-17 20:20:10
多年来,一直有人尝试在
之上构建类型系统。一次这样的尝试发生在1997年,由Glasgow Haskell编译器的主要开发人员之一Simon Marlow和Philip Wadler进行的,Philip Wadler参与了Haskell的设计,并为monads背后的理论做出了贡献(请阅读关于所说的类型系统的论文)。乔·阿姆斯特朗后来对这篇论文发表了评论:
有一天,Phil打电话给我,告诉我a) Erlang需要一个类型系统,b)他已经写了一个类型系统的小原型,c)他有一年的休假,准备为Erlang写一个类型系统,“我们有兴趣吗?”答案是:“是的。”
Phil Wadler和Simon Marlow在一个类型系统上工作了一年多,结果在20年内发表。这个项目的结果有点令人失望。首先,只有语言的一个子集是类型可检查的,主要的遗漏是缺少进程类型和进程间消息的类型检查。
http://learnyousomeerlang.com/types-or-lack-thereof
https://stackoverflow.com/questions/8506556
复制相似问题