首页 > 其他分享 >9-Simple Typed Lambda Calculus

9-Simple Typed Lambda Calculus

时间:2024-01-29 11:12:05浏览次数:25  
标签:Calculus 函数 Simple Typed T2 T1 参数 类型 lambda

函数类型

因为纯粹的 lambda 演算是 turing 完备的,因此只有运行时才能够完全确定类型,比如:

if <complex evaluation> then true else (λx.x)

定义函数类型:λx.t: →;为了更加精确,加入参数 T1 T2,得到如下递归定义:

定义:类型 Bool 上的简单类型集合是由下列语法产生的:

T ::=
      Bool  (布尔类型)
      T → T  (函数类型)

类型构造子是右结合的,即 T1 → T2 → T3 ≡ T1 → (T2 → T3),这也与直觉相吻合

类型关系

首先遇到的问题是:对于一个 abstraction,怎么知道参数是什么类型?

  • 给参数添加类型注释(相当于给参数指派一个类型);称为显式类型化 explicitly typed

  • 分析抽象体,通过体中囿变量的行为逆推断参数类型;称为隐式类型化 implicitly typed

TaPL 集中讨论第一种方案

既然已知参数类型,那么函数结果的类型显然是抽象体的类型,表示为:

原来这里自带图床

类型上下文 typing context

由于项 x 可能包含 lambda 抽象,所以为了保证推导的准确性,需要若干个同样的类型注释(也可以理解成一个指派 / 假设),因此我们拓展一下类型关系,添加一个类型上下文 typing context,记为 Γ;原先 t : T 的类型关系被扩展为 Γ ├ t : T 的一个三元关系;同时 comma 算子 , 被用来扩展 Γ,比如:Γ , x : T 意味着新的绑定 binding 被加入了这个上下文之中,Γ 可以看作从变量到类型的一个函数

\(\lambda_\rightarrow\) 称为简单类型的 lambda 演算

类型的性质 Properties

引理:(类型关系的逆)

标签:Calculus,函数,Simple,Typed,T2,T1,参数,类型,lambda
From: https://www.cnblogs.com/sysss-blogs/p/17993010

相关文章

  • 8-Typed Arithmetic Expressions
    静态类型在UntypedArithmeticExpressions里有如下定义:如果一个范式不是一个值,则称此项受阻在这个小型语言里引入两个类型NatBool,来区分布尔值项和数值项断言“项t有类型T”意味着t的运算结果的类型在运行之前就可以被确定,比如succ0;至于iftruethen0elsefals......
  • 5-The Untyped Lambda Calculus
    引入在lambda演算中,所有事物都是函数lambda演算式中有三种项:变量x,形如x变量x在另外一个项t1中的抽象abstraction,形如λx.t1将项t1作用于t2,形如t1t2有如下的简单的递归定义来总结上述三种项的形式:t::=x(variable)λx.t(abstrac......
  • Java中SimpleDateFormat时YYYY与yyyy以及HH和hh的区别注意踩坑
    场景Java开发手册中为什么要求SimpleDateFormat时用y表示年,而不能用Y:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/131052335在使用SimpleDateFormat在获取当前日期时因使用了YYYY导致20231231这个日期被格式化为20241231这里推荐在日期处理时统一使用封装工具......
  • rocketmq--push、poll、simple模型的区别
    RocketMQ提供了几种不同类型的消费者,以满足不同使用场景的需求。以下是RocketMQ中三种主要消费者类型的原理和区别:PushConsumer(推模式消费者)原理:PushConsumer是一种被动接收消息的消费者。Broker(消息服务器)将消息推送给消费者,消费者监听指定的Topic和Tag。当消息到达时,Broker......
  • 3-Untyped Arithmetic Expressions
    导论这一章节和下一章节构建了一套工具服务于仅含布尔值和数值的小型语言这个小型语言非常简单,但是可以承载几个非常重要的概念抽象语法abstractsyntax归纳定义和证明inductivedefinitionsandproofs求值evaluation运行时错误runtimeerror这个小型语言用到以下几......
  • 无涯教程-MATLAB - 微积分(Calculus)
    MATLAB提供了多种方法来解决微分和积分问题,求解任意程度的微分方程式以及计算极限,最重要的是,您可以轻松求解复杂函数的图,并通过求解原始函数及其导数来检查图上的最大值,最小值。本章将讨论微积分的问题,在本章中,我们将讨论预演算的概念,即计算函数的极限并验证极限的性质。计算极......
  • Simple CTF-简单CTF
    首先对靶机进行端口扫描nmap-sV-p-10.10.70.110通过扫描结果可以看出靶机开放了21端口vsftpd服务、80端口apache服务、2222端口openssh服务这里我们的思路是匿名用户登录ftp,获取一些有用的文件80端口目录扫描,robots文件,指纹识别ssh爆破经过我的尝试ftp无法正常执行......
  • AWS Simple Email Service (SES) 实战指南
    AmazonSimpleEmailService(SES)是一项强大的电子邮件发送服务,适用于数字营销、应用程序通知以及事务性邮件。在这个实战指南中,我们将演示如何设置AWSSES并通过几个示例展示其用法。设置AWSSES1.创建AWS账户首先,您需要创建一个AWS账户并登录AWS管理控制台。2.访问......
  • Java基础语法API之Date和SimpleDateFormat
    一:概述在实际开发中,Date类和SimpleDateFormat类是两个常用的时间类。在这里主要具体说一下Date时间类和SimpoleDateFormat类。二:具体说明<1>JDK文档中的介绍《1》Date类《2》SimpleDateFormat类<2>具体代码案例/*构造方法:Date():分配Date对象并对其进行初始化,使其表......
  • PySimpleGui_Note
    PySimpleGui_Note1.模块安装与导入#安装命令pipinstallPySimpleGui#模块导入importPySimpleGui #方式一importPySimpleGuiasSg #方式二,方便后续引用2.创建基本页面importPySimpleGuiasSg#控制页面布局layout=[[Sg.Text("第一行文字")],[Sg......