subtyping - 如果 A 是 B 的子类型,那么 (A→B) → A 是否是 (B→B) → A 的子类型?
问题描述
假设A是B的子类型,(A→B)→A是(B→B)→A的子类型吗?A→(B→A)是B→(B→A)的子类型吗?
解决方案
根据子类型和函数类型,方法如下:
象征意义和假设:
A
是( )的子类型B
A < B
X→Y
是接收类型实例X
并返回类型实例的函数(类型)Y
- 函数类型
S1→S2
是iif的子类型,并且T1→T2
T1 < S1
S2 < T2
要(A→B)→A
成为(B→B)→A
它的子类型,将需要:
(B→B)
<(A→B)
和A < A
(真实身份)
为了(B→B) < (A→B)
再次应用我们需要的函数子类型:
A < B
(假设为真)和B < B
(缩进为真)
或(A→B)→A
的子类型也是如此(B→B)→A
(A→B)→A < (B→B)→A
尝试按照类似的分析来回答第二个问题:
是A→(B→A)
的亚型B→(B→A)
吗?
推荐阅读
- spring-boot - 简体和繁体中文字符存储为?在 Spring Boot 项目中使用 Liquibase 在 Sybase 数据库中
- datatables - 如何在数据表中设置选定列的排序?
- html - 根据子元素的内容为父元素编写ublock过滤规则
- linux - 从 .bachrc 中键/值对的 .list 文件设置环境变量
- c# - MVC ViewModels - 无法访问从控制器传递到视图的对象/变量
- c# - 使用触发器实现自定义“选择器”用户控件来控制所选项目的样式
- node.js - npm install 失败说“没有名为 isNearDeath 的成员”
- .net - Twitter API 以“远程主机强制关闭现有连接”响应
- angular - 如何使用 ngfor 以角度制作动态形式?
- python - 如何从该网页中抓取文本?