自动类型推导的作用
我看过一些带自动类型推导的语言的介绍,包括 ML 和 Haskell。它们都强调了自动类型推导减轻了程序员的负担,因为你不必每个函数都写上类型签名。但另一方面,它们又说:写上类型签名好处多多。
我觉得这两个说法是熊掌和鱼,不能兼得。它们这样说,有虚假广告的嫌疑。
个人觉得还是应该写上签名。解释器或编译器其实并不轻信我们的签名,它还会用自动推导来核对。我觉得这才是自动类型推导真正有意义的地方。
大家以为如何?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
嗯,这个是检查类型是否匹配。
没错。若是全部的类型信息都给出了,只需要检查是否匹配就可以了。
检查有无冲突叫type checking类型检查,和type inference类型推导有很大差别
强大的type inference可以简化编写工作量,更重要的是,有力支持了polymorphic type机制
比如 c 语言,一个表达式最终也能算出一个类型来,但这个应该不是我们所说的“自动类型推导”。
我觉得部分类型没有给出的前提下才需要 infer.
它不推导怎么知道你有没有写对?
>> 这只是一方面,类型还可以起到文档的作用,Haskell 的许多函数,你只要看它的类型,往往就能猜到它的语义,更不要说能了解它的用法了。
是有这个作用。
关于自动推导,资料上是这样写的
这样看来,如果我把签名都写上,编译器是不是就不需要类型推导了?只要按我给出的签名检验是否冲突就可以了?
也不能这么说。许多时候做快速原型开发的时候,完全可以不写类型而尽量依赖自动推导。这就好像 Perl 的词法变量,在你写一些一次性脚本的时候完全可以不用,但在做工程性开发的时候最好还是尽量用
这只是一方面,类型还可以起到文档的作用,Haskell 的许多函数,你只要看它的类型,往往就能猜到它的语义,更不要说能了解它的用法了。