首页 > 其他 > 详细

programming-languages学习笔记--第4部分

时间:2018-12-17 00:47:53      阅读:277      评论:0      收藏:0      [点我收藏+]
programming-languages学习笔记–第4部分

programming-languages学习笔记–第4部分

1 什么是类型推导

编译时的类型检查,防止一些错误。静态类型语言的特性。

动态类型语言较少或没有做这些检查,有可能在运行时将一个数字认为一个函数。

ML,Java,C#,Scala,C,C++都是静态类型的,所有的绑定在编译时确定。

动态类型语言在运行时做类型检查,在程序运行时确定类型。

ML是隐式类型,不需要写出类型。

2 ML类型推导

关键步骤:

  • 按顺序确定类型绑定
    • 除了相互递归
    • 不能使用延迟绑定(later bindings):没有类型检查
  • 对每个val或fun绑定:
    • 分析所有必要事实(约束)的定义
    • 例如:如果遇到x>0,那么x必须是int类型。
    • 如果无法确定所有事实正确(过度约束),则类型错误。
  • 之后,对任何未约束的类型使用类型变量(例如‘a)
    • 例如未使用的函数参数可以是任意类型。
  • 最后,强制进行值约束

作者: ntestoc

Created: 2018-12-16 Sun 22:29

programming-languages学习笔记--第4部分

原文:https://www.cnblogs.com/ntestoc/p/10128918.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!