标准ML编程入门
![](https://csdnimg.cn/release/wenkucmsfe/public/img/star.98a08eaa.png)
"编程标准ML" 本书《Programming in Standard ML》由罗伯特·哈珀(Robert Harper)在2005年春季学期于卡内基梅隆大学编写,是一部关于使用标准ML编程语言的工作草案,截止日期为2010年8月8日。该书的版权属于作者,并遵循创作共用 Attribution-Noncommercial-NoDerivativeWorks 3.0 美国许可协议。其初衷是作为计算机科学15-212课程“程序设计原理”的讲义,这门课程是卡内基梅隆大学计算机科学本科教育序列的第二学期课程。之后,该书也被其他多所大学广泛采用。 标准ML是一种形式化定义的编程语言,其正式定义可在《The Definition of Standard ML (Revised)》中找到。这本书的目标是替代作者之前广泛传播的《Introduction to Standard ML》,旨在提供一个全面的、深入的标准ML编程教程。 标准ML(SML)是一个强类型、静态类型的函数式编程语言,强调类型安全性和编译时错误检查。它具有以下特点: 1. **函数式编程**:SML的核心是函数,它支持高阶函数,即函数可以作为其他函数的参数或返回值。函数可以用来表达复杂的数据处理逻辑,而不需要显式的变量赋值和控制流。 2. **类型系统**:SML的类型系统非常强大且严格,所有值都有类型,编译器会进行类型检查以确保类型正确性。类型推断是其一大特色,编译器可以自动推断大部分变量和函数的类型,减少了程序员手动指定类型的负担。 3. **模块系统**:SML的模块系统允许组织代码为独立的单元,称为结构体(structures),可以导出和导入接口,便于代码重用和封装。 4. **静态内存管理**:SML使用了基于垃圾收集的静态内存管理,避免了程序员需要手动管理内存的问题,同时也保证了程序的稳定性和安全性。 5. **模式匹配**:SML支持模式匹配,这是一种强大的语法特性,可以在函数定义中对数据结构进行解构,根据不同的模式执行不同的代码块。 6. **不可变数据**:SML中的数据一旦创建就不能修改,这有助于实现纯函数式编程,也有利于并发编程,因为没有副作用,所以并行执行不会引入额外的复杂性。 7. **编译与解释**:虽然SML主要是被编译的语言,但也有解释器用于快速测试和调试代码。 书中可能涵盖了如何声明和使用基本数据类型(如整数、浮点数、字符串和布尔值)、构造和操作列表、元组和其他复合数据类型、定义和应用函数、使用递归以及模式匹配等基础概念。此外,还可能涉及高级主题,如类型类、模块系统、异常处理、局部绑定、类型别名、记录、高阶抽象和引用等。 通过学习《Programming in Standard ML》,读者将能掌握标准ML的基本语法和编程技巧,理解函数式编程思想,以及如何利用这些概念来构建高效、可靠的软件系统。此外,由于标准ML的严谨性和理论基础,学习它也可以为理解和掌握其他编程语言打下坚实的基础。
![](https://csdnimg.cn/release/download_crawler_static/5516687/bg10.jpg)
![](https://csdnimg.cn/release/download_crawler_static/5516687/bg11.jpg)
![](https://csdnimg.cn/release/download_crawler_static/5516687/bg12.jpg)
![](https://csdnimg.cn/release/download_crawler_static/5516687/bg13.jpg)
![](https://csdnimg.cn/release/download_crawler_static/5516687/bg14.jpg)
剩余314页未读,继续阅读
![](https://profile-avatar.csdnimg.cn/aa67d394b6254147b3c739ca0fced1fb_jiangdmdr.jpg!1)
- 粉丝: 57
- 资源: 771
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- AirKiss技术详解:无线传递信息与智能家居连接
- Hibernate主键生成策略详解
- 操作系统实验:位示图法管理磁盘空闲空间
- JSON详解:数据交换的主流格式
- Win7安装Ubuntu双系统详细指南
- FPGA内部结构与工作原理探索
- 信用评分模型解析:WOE、IV与ROC
- 使用LVS+Keepalived构建高可用负载均衡集群
- 微信小程序驱动餐饮与服装业创新转型:便捷管理与低成本优势
- 机器学习入门指南:从基础到进阶
- 解决Win7 IIS配置错误500.22与0x80070032
- SQL-DFS:优化HDFS小文件存储的解决方案
- Hadoop、Hbase、Spark环境部署与主机配置详解
- Kisso:加密会话Cookie实现的单点登录SSO
- OpenCV读取与拼接多幅图像教程
- QT实战:轻松生成与解析JSON数据
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)