
PL理论深化 (Master)
文章平均质量分 95
进一步学习PL理论,更深层次地探讨细节。
王平渊
流量操盘手,主要从事互联网知识付费项目研发工作,专注于跨平台引流以及私域变现。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【PL理论深化】(17) 文法构造:形式参数 | 实质参数 | 主体表达式 | let 表达式可被函数替换 | 提高编程的便利性 —— “语法糖“ (Syntactic sugar)
本章将扩展上一章的语言,以便能够定义和使用函数。原创 2024-07-04 18:49:19 · 1445 阅读 · 4 评论 -
【PL理论深化】(16) 设计实践:语言执行器
现在让我们来实现一个语言执行器 (目前为止的体系) 。原创 2024-07-04 00:28:34 · 712 阅读 · 4 评论 -
【PL理论深化】(15) 推理规则:变量的规则 E-Val, E-Let | 条件表达式定义 E-If-T, E-If-F, E-Zero-T | 运算环境 ρ = {x↦1, y↦2} 的程序
上一章我们讲解了环境的基本概念,本章我们将讲解推理规则。原创 2024-07-01 17:29:18 · 1409 阅读 · 6 评论 -
【PL理论深化】(14) 语意结构:环境 (envrioment) | Env = Var→Val | Val = Z + B | 语义域 (semantic domain) | ρ∈Env
现在我们来定义语言的语义结构,规则用于执行用这种语言编写的程序。原创 2024-07-01 02:38:21 · 1006 阅读 · 2 评论 -
【PL理论深化】(13) 变量与环境:文法结构 | 真假表达式:isZero E | let 表达式叠放 | 定义的规则 | 条件语句的使用
从现在开始,让我们正式设计和实现编程语言。首先,让我们扩展在之前定义的整数表达式语言,以便可以使用变量和条件表达式。原创 2024-06-30 22:31:01 · 1325 阅读 · 0 评论 -
【PL理论深化】(12) Ocaml 语言:高阶函数 | map 函数 | filter 函数 | fold 函数
在函数式编程中,除了递归函数外,还经常使用高阶函数。高阶函数是指接收其他函数作为参数或返回另一个函数的函数。高阶函数通过抽象编程模式以实现重用,使程序可以在更高层次上进行编写。让我们重点看看常用的高阶函数,如map、filter 和 fold。原创 2024-06-30 01:07:53 · 866 阅读 · 2 评论 -
【PL理论深化】(11) Ocaml 语言:函数式编程 vs. 命令式编程 | 递归函数的代价 | 尾递归函数(tail-recursive function)
本章我们来比较在C语言中用循环实现的插入排序函数,与前面定义的函数式编程版本。原创 2024-06-29 13:40:33 · 936 阅读 · 2 评论 -
【PL理论深化】(10) Ocaml 语言:递归函数 | 计算表长 | 列表的连接 | 反转列表 | 找到列表的第 n 个元素 | 从列表中删除首次出现的特定元素 | 列表插入
在函数式编程中,通常使用递归函数而不是循环语句来表示循环。递归函数不仅包含循环的概念,而且通过递归思维,往往能够更轻松地从不同角度解决问题。原创 2024-06-29 01:11:45 · 986 阅读 · 2 评论 -
【PL理论深化】(9) Ocaml 语言:自定义类型 | 异常处理 | 模块
本章我们将继续介绍OCaml 的基本特性,自定义类型、异常处理和模块。掌握了这些内容后,编写基本程序应该不会有太大困难。接下来的两节将学习函数式编程中常用的两种编程风格 —— 递归函数和高阶函数。原创 2024-06-28 09:14:05 · 1348 阅读 · 1 评论 -
【PL理论深化】(8) Ocaml 语言:元组和列表 | 访问元组中的元素 | 列表中的 head 和 tail | 基本列表操作符
本章我们将探讨OCaml 中的元组(tuple)和列表(list),它们是函数式编程语言中最常用的数据结构。原创 2024-06-28 00:35:50 · 1257 阅读 · 2 评论 -
【PL理论深化】(7) Ocaml 语言:静态类型语言 | 自动类型推断 | 多态类型和多态函数 | let-多态类型系统 | 模式匹配
OCaml 是一种拥有静态类型系统的语言,本章我们就要探讨静态类型系统。原创 2024-06-26 06:27:46 · 1347 阅读 · 3 评论 -
【PL理论深化】(6) Ocaml 语言: 函数 | 匿名函数 | 函数可以接受多个参数 | OCaml 是一种将函数视为 first-class 的语言
本章我们继续介绍如何使用 OCaml 进行函数式编程。介绍如何使用 let 定义函数,讲解匿名函数,函数可以接受多个参数,以及讨论 OCaml 将函数视为 first-class。原创 2024-06-25 21:57:20 · 1192 阅读 · 0 评论 -
【PL理论深化】(5) Ocaml 语言:条件表达式 | if e1 then e2 else e3 | 使用 let 关键字定义变量 | let...in 表达式 | 函数式编程
本章我们继续介绍如何使用 OCaml 进行函数式编程,讲解条件表达式 if e1 then e2 else e3,介绍如何使用 let 关键字和 let ... in 表达式定义变量。原创 2024-06-25 18:55:53 · 1235 阅读 · 19 评论 -
【PL理论深化】(4) Ocaml 语言:基础讲解 |通过 REPL 执行 Ocaml 程序 | Ocaml 解释器 | 编译器 ocamic | 程序构成的基本单位 | 原始值 | 基本数据类型
本章我们要开始介绍如何使用 OCaml 进行函数式编程。书中探讨函数式编程的原因主要有三点。首先,我们将会设计和实现编程语言,而实现语言将会使用函数式编程语言OCaml,因为在实现编程语言的解释器 (interpreter) 或类型系统 (type system) 等处理程序作为数据的程序时,函数式语言非常方便。第二个原因是,包括OCaml在内的函数式语言从编程语言理论的角度来看是设计良好的语言。仅仅是研究这些语言的特征,就能对编程语言有很多了解。尤其是函数式编程的概念,近年来大多数编程语言都在借鉴,因此深原创 2024-06-24 06:55:22 · 2876 阅读 · 1 评论 -
【PL理论深化】(3) 数学归纳法:归纳假设 (IH) | 结构归纳法 | 归纳假设的证明
本章我们继续讲解归纳法,介绍归纳假设和结构性归纳法。原创 2024-06-23 20:21:22 · 1284 阅读 · 1 评论 -
【PL理论深化】(2) 数学归纳法:语法分析 (Syntax) | 编程语言的语法结构:文法 | 语义结构 (Sematics)
编程语言是由归纳法生成的程序的集合。定义属于该语言的程序的形式的规则,即编写程序的规则,称为编程语言的 语法分析(syntax) 而定义属于该语言的程序的意义的规则称为 语义结构(semantics)。这两者都是归纳定义的。原创 2024-06-22 21:26:41 · 1507 阅读 · 9 评论 -
【PL理论深化】(1) 数学归纳法:集合的归纳性定义 | 推理规则:前提 / 结论 | 证明规则和证明树 | CFG 上下文无关文法:G = (V, Σ, R, S) | 归纳定义的例子
所有编程语言都是通过归纳法定义的。因此,虽然编程语言本身是有限的,但用该语言编写的程序数量是没有限制的,本章将学习编程语言研究中最基本的归纳法。原创 2024-06-21 07:50:01 · 2249 阅读 · 6 评论