SML 类型推断的提示

2023-12-07

我是 SML 的新手,我正在尝试练习 SML 类型参考。我正在尝试演绎以下类型:

a)fun add42 x =x+42
b)fun comp F G = let fun C x = G(F(x)) in C end
c)fun compA42 x = comp add42 x
d)val foo = compA42 add42
e)fun compCompA42 x = comp compA42 x

我认为前四个的解决方案是:

a)int->int
b)(a->b)->(b->c)->a->c
c)(int->a)->int->a
d)int->int

但我对最后一个有点困惑。 有没有提示扣除最后一个类型?

多谢。


让我们一步一步手动执行此操作:

fun compCompA42 x = comp compA42 x
  1. 这是一个函数,所以compCompA42有类型α -> β.
  2. compCompA42的返回值必须与以下类型相同comp compA42 x, i.e. β = typeof(comp compA42 x).
  3. 我们现在已经有了最通用的类​​型comp:

    (a -> b) -> (b -> c) -> a -> c

现在,我们需要专门针对以下情况:a -> b = typeof(compA42) and (b -> c) = α:

  1. a -> b = typeof(compA42) = (int -> d) -> int -> d。从这个方程可以得出a = int -> d and b = int -> d.

  2. So, α = b -> c = (int -> d) -> c and β = typeof(comp compA42 x) = a -> c = (int -> d) -> c.

  3. 最后,我们最通用的类​​型compCompA42 is

    α -> β = ((int -> d) -> c) -> (int -> d) -> c.


Observe that you can always make some SML interpreter (e.g., smlnj) show you types:
- fun compCompA42 x = comp compA42 x;
val compCompA42 = fn : ((int -> 'a) -> 'b) -> (int -> 'a) -> 'b

它与我们手动获得的类型相同(只需重命名d to 'a and c to 'b).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SML 类型推断的提示 的相关文章

随机推荐

  • wpf属性网格

    我的 WPF 应用程序需要一个 propertyGrid 经过大量搜索后我发现this当我将 propertyGrid 添加到表单并运行它时 我已经添加了程序集 exe 文件 但在表单中看不到它 xaml代码
  • GMail API超级管理员通过API访问其他用户帐户?

    我的机构目前自 2009 年初以来一直在运行 Google Apps for Education 我负责创建 删除 修改学生电子邮件帐户等 我已将所有现有的 C 应用程序从 GData 转换为新的 Admin SDK 生活很美好 上周 其中
  • EF 代码优先 - 配置一对零或一关系,无需共享 PK/FK

    我正在尝试在两个实体之间建立一对零或一的关系 并且我希望依赖实体仍包含其自己的 Indentity 列 而不是共享密钥 我想尽可能遵循约定 而不是显式声明任何不需要显式声明的内容 因此 不不必要数据注释或 Fluent api 子句 实体
  • .net JSON 日期格式

    作为 net 服务的响应 我得到以下日期格式 日期 1233323754523 0100 1233323754523 是时间戳格式的日期 但我不知道 0100 是什么意思以及如何从java代码生成它 Thanks 我假设时间戳采用 UTC
  • React Native无法连接到Android中的SSE

    我正在使用该包 https www npmjs com package react native sse 即使我从文档中复制粘贴代码 我也无法设法从 android 中的服务器接收事件 import EventSource from rea
  • 在谷歌地图中设置城市周围的边界

    我正在寻找一种使用 JavaScript 在 Google 地图 API V3 中设置特定城市 城镇周围边界的方法 API 中是否支持这种类型的事情 基本上 我不希望我的用户能够比城市更远地平移地图 包括乡村地区而不仅仅是城市范围 那么您想
  • 用 Java 下载文件。多线程,这有效吗?

    首先 每个人都需要知道我对 Java 编码还比较陌生 更准确地说 我对面向对象编程完全陌生 对于这个问题 我正在尝试创建一个下载类来更新进度条以显示其进度 可能还有我决定将来更新的其他内容 目前的问题是 在我看来 这不应该起作用 我可以在
  • 如何检查用户是否在 Firebase 和 Express/Node.js 中经过身份验证?

    如果我有一个页面只能由经过身份验证的用户访问 我如何检查用户是否经过身份验证 我尝试使用 firebase auth currentUser null 但我收到一条错误消息 TypeError firebase auth is not a
  • Pyplot 在缩放时保持文本大小

    我想在 pyplot 图中包含一些文本 并且能够在不改变比例的情况下放大它 请参阅下面的情节示例 我希望发生什么以及实际发生了什么 重现错误的代码 import matplotlib pyplot as plt plt plot 0 0 1
  • 如何从clickhouse中的json中提取json?

    我的基地有一个 json a 1 b 2 c d 3 e str 1 d 4 e str 2 我需要获取每个键的所有唯一值 但在提取键 d 和键 e 的值时遇到一些问题 Using SELECT DISTINCT JSONExtractRa
  • 如何改变gitbook的代码填充效果?

    这是stackoverflow的markdown代码效果 Code from stackoverflow Nearly no extra space at the beginning And this is the markdown cod
  • php $_SESSION 变量随机消失和重新出现

    Preface 这是一个 发展 之前的一个问题我的 他的答案最终没有解决我的问题 但是通过尝试所有建议并尝试其他东西 我发现真正的问题是别的东西 所以我在这里重新表述我的问题 我有一个登录页面 系统 多年来一直正常工作 让用户保持登录状态
  • 使用 Swift 迭代 Firebase 中的嵌套快照子项

    我正在尝试循环遍历 Firebase 数据库中的子级以检索嵌套键 我的数据库结构如下 Users Username Favorites Location Latitude 123 LocationName San Francisco Lon
  • 如何将包含基于位置的数据的列添加到 R 中的 SpatialPolygonsDataFrame 中?

    我在 R 中有空间数据 它作为SpatialPolygonsDataFrame library sp library tmap d lt readRDS data rds qtm d 例如 我使用了德国的数据http www gadm or
  • 在 Chrome 中自动录制语音输入

    我正在尝试自动记录 Google 中的语音语音输入 仅适用于 Chrome 事实上 用户必须单击麦克风才能开始录音 但我正在进行一个用户不会与计算机交互的安装 因此我必须以其他方式触发录制 就目前看来 您无法通过代码访问语音输入功能 即您无
  • 如何使用 eyed3 从 python 中的 .mp3 文件获取详细信息(标题、艺术家)

    这是我的代码 import eyed3 audiofile eyed3 load 19 Calvin Harris Summer mp3 print audiofile tag artist 这是一个错误 Traceback most re
  • 提交后保留所选值

    我有一个时间下拉选择 我想在按下提交按钮后保留所选值 此处为 HTML
  • 如何阅读PHP手册中的函数定义

    我正在浏览下面这个函数的 PHP 文档 并试图理解第二个参数之前的 是什么意思 string basename string path string suffix 为什么不简单地提及如下 string basename string pat
  • 如何找到 SwiftUI UIViewRepresentable 的框架

    我正在尝试包装一个自定义子类UILabel in UIViewRepresentable在 SwiftUI 中使用它 我在用着 sizeToFit并打印框架 当它在包装中时看起来是正确的 func makeUIView context Co
  • SML 类型推断的提示

    我是 SML 的新手 我正在尝试练习 SML 类型参考 我正在尝试演绎以下类型 a fun add42 x x 42 b fun comp F G let fun C x G F x in C end c fun compA42 x com