免责声明
尽管标题如此,这是一个真正的问题,而不是Emacs/Vi的争论。
背景
我使用Haskell几个月,并编写了一个小型的约10K行代码的解释器。在过去的一年中,我转向了Clojure。相当长一段时间里,我为Clojure缺乏类型而苦恼。然后我开始使用Clojure中的defrecords,现在则改用Clojure的defprotocols。
我非常喜欢defprotocols。事实上,比类型更喜欢。
现在我的Clojure函数的文档字符串已经到了这样的程度:
* the protocols of the inputs
* the protocols of the outputs
使用这种方法,看起来我现在拥有了一种临时的类型系统(未经编译器检查;但是经过人工检查)。
问题
我怀疑自己对类型方面有所遗漏。类型相对于协议提供了什么?