当前位置:网站首页>[TAPL] 概念笔记
[TAPL] 概念笔记
2022-08-10 18:23:00 【SakamataZ】
基础概念
- 什么是gradual typing
允许一部分使用动态类型一部分使用静态类型的语言 - type classes
对类型进行操作的类 - type-class polymorphic
类型类多态,相当于type classes的接口函数 - trait 构造顺序
调用超类的构造器;
特征构造器在超类构造器之后、类构造器之前执行;
特征由左到右被构造;
每个特征当中,父特征先被构造;
如果多个特征共有一个父特征,父特征不会被重复构造
所有特征被构造完毕,子类被构造。 - trait和type classes有什么区别?
- typeclasses以单独的方式处理而非将对象固定到表面
- trait不支持functor和applicative等高阶函数
- 什么是皮亚诺系统?什么是后继运算?什么是归纳集?什么是λ演算?β系统中α和β两种变换分别是什么?
https://zhuanlan.zhihu.com/p/34679052
要注意的是:给λ演算的语法项符号不同的推导规则,得到的公理系统也不同,其中最简单的是β系统,它指定了α和β两种变换 - 什么是卫生宏?
lisp引入的宏规则,
- 宏展开后,原表达式处于新的词法环境中
- 宏展开式中的自由标识符,处于宏定义时的词法作用域中,保留其引用透明性
- 为什么Rust比C++慢?
1.没有RVO 返回类型优化防止新的临时对象创建 2.Arc不能去掉弱引用计数 3.如果不优化move,那么会多占用栈空间 4.没有placement new,不能在已分配的内存中分配对象。
TAPL
评估形式化语义的三种方法是什么?
评估形式化的语义,就是评估项term的语义,
主要有:
操作语义(将语言视为抽象的自动机)
指称语义(定义一集数学的对象domains,并且定义一个解释函数,将terms映射到domains实体中)
公理化语义(公理化语义从定义的自身出发推导出语言的含义)one-step evaluation relation:
满足规则的最小二进制关系什么是mutable reference cells 和 nonlocal exception handling?
类型系统是指一种根据计算出的值的种类对于词语进行分类,从而证明某程序行为不会发生的可行语法手段。
给定语言中能够使用类型系统消除的错误一般称为运行时类型错误runtime type error,一般的类型系统相对直接的检查能够校验简单的类型错误和数组越界。
一个类型安全的语言是编程时不会危害到自身的语言,是一个保护其抽象的语言,
语言安全性可以由运行时或静态类型检查保证,Scheme没有静态检查,但是仍然类型安全。如果建立了动态检查的设施,那么检查的代价将会很小(但是也存在一些Basic方言 提供底层原语,因此不安全)
不安全的语言通常提供效果最佳的静态类型检查器,但是一般不能够保证良类型的程序是良行为的
在对象变量上取值的变量称为元变量,不含自由变量的项称为封闭项,封闭项也称为组合子,最简单的组合子称为恒等函数 id = lambdax(x)只输出其变元。 不动点组合式可以用来定义递归函数
full beta规约:任何时候可以以任意顺序规约 规范顺序
normal order策略:最左侧最外面先被规约
按名调用call by name:不针对抽象进行规约。
haskell采用按需规约call by need的方式
一般则采用call by value的方式使用lambda项表示的数称之为church数值 Church 编码是一种“抽象方法”,它将“数字”、“运算”等概念全数“抽象”成λ- 演算
简单代换一个项x到t,使自由变量编程收到限制的变量的情况称为变量捕捉
纯lambda演算是图灵完备的,为了解决结果的发散问题,有两种方案,第一种使用项的类型注释来显式检查类型的结果,第二种是使用类型检查器自己推导或者重构这个信息。
边栏推荐
猜你喜欢
MySQL安装步骤
破解校园数字安全难点,联想推出智慧教育安全体系
测试接口出现“data“: “Full authentication is required to access this resource“凭证已过期
弘玑Cyclone与风变科技达成战略合作:优势互补聚焦数字化人才培养
Active users of mobile banking grew rapidly in June, hitting a half-year high
Toronto Research Chemicals 双(乙酰丙酮)铂(II)
【深度学习21天学习挑战赛】4、初尝循环神经网络(RNN)——股票预测
redis.exceptions.DataError: Invalid input of type: ‘dict‘. Convert to a byte, string or number first
Flexsim 发生器设置label和颜色
【快应用】如何使用命令打包快应用rpk
随机推荐
Redis命令---key篇 (超全)
FPGA工程师面试试题集锦61~70
【HMS core】【FAQ】AR Engine、Analytics Kit、Video Editor Kit、Image Kit、Map Kit典型问题合集2
6-11 Preorder output leaf nodes (15 points)
剑指 Offer II 034. 外星语言是否排序-辅助数组法
JVM基本结构
位算符详解 按位与、或、异或、取反、左移、右移
【FAQ】【Push Kit】 华为怎么设置角标
Toronto Research Chemicals BTK抑制剂丨ACP-5197
剖析Framework面试—>>>冲击Android高级职位
Toronto Research Chemicals BTK甜味剂配方丨D-Abequose
openssl查看证书信息
StoneDB 文档捉虫活动第一季
【图像去雾】基于颜色衰减先验的图像去雾附matlab代码
MySQL 查询出重复出现两次以上的数据 - having
API 网关的功能
H3C_堆叠(IRF)及链路聚合在项目中的综合应用
瑞吉外卖学习笔记4
罗克韦尔Rockwell Automation EDI 项目
FPGA工程师面试试题集锦71~80