N 元组与对

2023-11-26

在 Ocaml 中,具有不同元数的元组具有不同的类型和值构造函数:

# let a = (1, 2, 3);;
val a : int * int * int = (1, 2, 3)
# let b = (1, (2, 3));;
val b : int * (int * int) = (1, (2, 3))

请注意,第二个示例 (b) 比第一个示例 (a) 更灵活,因为 b - (2, 3) - 的“tail”本身就是有效值:

# let (_, c) = b;;
val c : int * int = (2, 3)
# let d = snd b;;
val d : int * int = (2, 3)

不将“(1, 2, 3)”解析为“(1, (2, 3))”而是为不同的参数引入无限(或者更糟糕的是,有限)数量的新类型和值构造函数的原因是什么?


不将“(1, 2, 3)”解析为“(1, (2, 3))”而是为不同的参数引入无限(或者更糟糕的是,有限)数量的新类型和值构造函数的原因是什么?

ML 类型系统的设计是为了追求更强的静态类型检查,以便在编译时捕获尽可能多的错误。

您的建议将大大削弱类型系统,因为它将不再能够区分(1, 2, 3) and (1, (2, 3))这是朝相反方向移动。

在实践中,我可以告诉你,机器学习所做的这种区分过去已经在我的生产代码中发现了真正的错误。我很看重这种背景下的机器学习设计。

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

N 元组与对 的相关文章

随机推荐

  • 将由返回字符分隔的字符串转换为 List 的最佳方法是什么?

    我需要经常转换 字符串块 包含返回字符的字符串 例如来自文件或文本框的字符串 into List
  • 使用jquery将一系列元素包装在两个h2标签之间

    我目前有一个动态创建的页面 如下所示 h2 a Heading h2 p a paragraph p p a paragraph p p a paragraph p p a paragraph p p a paragraph p h2 a
  • 如何修复 Laravel 5.1 - 404 Not Found?

    我第一次尝试使用 Laravel 5 1 我能够安装它并且https sub example com laravel public 正在显示应该显示的内容 但是 我创建的视图给出了 404 错误 找不到页面 这是我到目前为止所做的 我创建了
  • 如何将焦点设置到 UserControl(使其可选择)?

    我需要将焦点放在UserControl它本身 而不是它的孩子 否则我无法实现从缓冲区的插入 环境Focusable True没有帮助 Google 和 SO 仅告诉您如何将焦点设置到 UserControl 子级 我的控件包含 工具栏上有多
  • 通过 xslt 重新排列 xml 节点(包括子节点)

    我有一个 xml 文档 现在我想将其转换为另一个内容相同但元素顺序不同的 xml 文档 原始的xml文档如下
  • 装饰一个类来监控属性变化

    我希望有一些类 只要订户的属性之一发生更改 就会自动向订户发送通知 所以如果我写这段代码 ChangeMonitor class ChangingClass object def init self x self x x changer C
  • 谐波序列递推

    我真的掌握了递归的窍门 或者我认为是这样 但这个问题让我绊倒 我试图返回 1 1 2 1 3 1 n 但无论我尝试什么 该方法都会返回 1 0 我一生都无法弄清楚出了什么问题 public static double harmonic in
  • 使用navigateUpFromSameTask()从活动返回

    我有两个活动 A 和 B 当活动 A 首次启动时 它会访问Intent传递给它 因为Bundle is null 因为它应该是第一次通过 并相应地显示信息 CustInfo m custInfo protected void onCreat
  • 是否必须位于 内

    是否有一个表行 tr 必须位于表体中 tbody 如果表有表体 或者它可以存在于表体之外吗 table tr td td tr tbody tr td td td td tr tbody tr td td tr tbody tr td td
  • 通过iOS6新社交框架查询Facebook用户数据

    我正在尝试使用 iOS 6 的新 Facebook 集成 API 查询有关用户的信息 这是我正在使用的代码 与他们在 WWDC 上演示的代码基本相同 NSDictionary parameters NSURL url NSURL URLWi
  • 如何使 Spring Security 应用程序在代理后面运行?

    我们有一个基于 Java 1 6 和 Spring 3 0 3 构建的应用程序 该应用程序使用 Spring Security 3 0 5 并使用 Spring Web 和 RestEasy 2 1 0 实现 REST API 我需要将此应
  • 为什么 PHP 中的函数和方法不区分大小写?

    PHP 中的函数和方法不区分大小写 如以下示例所示 function ag echo 2 Ag class test function clMe echo hi instance new test instance gt clme 但变量的
  • 确定.Net Core控制台应用程序是否以用户交互模式运行

    是否可以确定 Net Core 控制台应用程序是否以用户交互模式运行 在 Net 的早期版本中可以进行测试Environment UserInteractive查看用户是否有权访问该应用程序 这在 Net core中似乎不存在 NET Co
  • 获取正在运行或挂起的 PHP 脚本的堆栈跟踪

    我有一个每晚从 cron 作业运行的脚本 最近 脚本进入几分钟后就开始完全冻结 我不明白为什么 如果这是 Java 我可以简单地运行kill 3 PID它会在标准输出中打印线程转储 PHP 中是否有任何等效项 我可以在其中获取正在运行的 P
  • Java路径..jvm.cfg错误

    谁能告诉我为什么当我尝试运行 Java 程序时出现以下错误 程序编译成功 但无法运行 我已经设置了Java的路径 C JavaServ gt javac hello1 java C JavaServ gt java hello1 Error
  • mysql 存储过程与 INTO OUTFILE

    我有一个 mysql 存储过程 我想做两件事 1 查询一个表 并将结果作为正常结果集返回 2 迭代结果集并从过程本身创建一个格式化文本文件 我查看了 INTO OUTFILE 但似乎 INTO OUTFILE 将原始结果写入指定的文件 而且
  • 在更改类中的属性时,有没有办法让 didSet 工作?

    我有一个带有属性观察者的类作为属性 如果我更改该类中的某些内容 是否有办法触发 didSet 如示例所示 class Foo var items 1 2 3 4 5 var number Int 0 didSet items number
  • React Native 无限滚动

    我试图获得无限滚动的最小示例 所以我有这个 var React require react native var StyleSheet View Image ListView React var data id 1 profile pict
  • PostgreSql:禁止更新列:如何?

    使用 PostgreSql 可以在没有触发器的情况下不允许更新列 只允许插入 完全未经测试 但由于 Postgres SQL 支持列级权限 看起来可能是这样 http www postgresql org docs current stat
  • N 元组与对

    在 Ocaml 中 具有不同元数的元组具有不同的类型和值构造函数 let a 1 2 3 val a int int int 1 2 3 let b 1 2 3 val b int int int 1 2 3 请注意 第二个示例 b 比第一