Coursera - Programming Language - 课程笔记 - Week 3

本文详细介绍了编程语言中的复合类型构建,包括元组、记录、数据类型绑定和多型数据类型等。强调了模式匹配的重要性,特别是嵌套模式和函数模式在简化代码和提高可读性方面的优势。此外,还探讨了类型推断、异常处理和尾递归的概念,揭示了编程语言的深层原理。
摘要由CSDN通过智能技术生成

Week 3

创建复合类型 Building Compound Types

  • 复合类型:包含了若干基本类型的类型
  • 三种主要的复合类型构建方式:
    • “Each of”:一个t的值包含了t1 t2 ... tn的每一个值
    • “One of”:一个t的值包含了t1 t2 ... tn中的其中一个值
    • 自我引用:一个t的值可以引用其他t的值
    • 元组是“Each of”类型
    • 选项是“One of”类型
    • 列表则是三者皆有(可全是,可空,可包含另一个list)

记录 Records

  • 一种“Each of”类型
  • 由命名域(name field)构成,每个命名域对应一种类型(基本类型或者是上述的复合类型)
  • 在存储时,命名域的顺序并不重要,标准情况下,命名域的存储顺序为字典序
  • 值:域名保持值{f1 = v1, ..., fn = vn}
  • 类型:域名对应类型{f1 = t1, ..., fn = tn}
  • 构建一个记录:{f1 = e1, ..., fn = en}
  • 方问记录中的其中一项:#filedname e
  • 对于记录,域名称的顺序并不重要,因为记录并不依赖各个元素的相对位置访问
  • 当访问一个记录中没有定义的域名时,会产生类型错误
  • 记录和元组有很多的相似的地方,相对来讲元组更短,但是人为地访问元素,用记录则更加方便,当元素很多的时候,用记录要比元组好用得多(前者只需要记住名字,后者则要记住元素的相对顺序)

元组,语法糖 Tuples as Syntactic Sugar

  • 在ML中,实际上元组是一种特殊的记录,即元组中的元素实际上是按照排列顺序在一个记录中从1开始用数字做命名域的对应值
  • 这是一种语法糖:
    • 实现更简单
    • 核心语言更小更简单
    • 将整个语言的模型变得更小使证明变得更短
  • (e1, ..., en)实际上是{1=e1, ..., n=en}的另外一种写法
  • 元组实际上使针对上述的一种记录写法的语法糖
    • 语法:我们可以完全通过对应的记录的语法来完整地描述语义
    • 糖:让整个语言更加舒适(sweeter)
  • 语法糖的好处
    • 简化理解
    • 简化实现
  • ML中的其他语法糖例子:andalso等对条件语句的替代

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值