何时在 SML 中使用分号?

2024-01-19

我知道分号在 REPL 中用作终止符。但我对何时在源文件中使用它们感到困惑。

例如,之后不需要val x = 1。但如果我之后省略它use "foo.sml",编译器会抱怨它。

那么,分号的使用规则是什么呢?


分号用于 SML 中的许多语法实体。它们通常用于创建表达式或声明等序列。这是 SML 语法的链接:

http://www.mpi-sws.org/~rossberg/sml.html http://www.mpi-sws.org/~rossberg/sml.html

就您而言,您对声明的分号感兴趣(dec班级)。请注意,创建 dec 序列的分号是可选的。在编写 SML 模块时,您实际上永远不会需要它,而且很少会看到它们。例如

structure S = struct
  val x = 5
  fun f x = x
  val z = x + x
end

not

structure S = struct
  val x = 5;
  fun f x = x;
  val z = x + x
end

在源文件中,通常使用分号的唯一地方是分隔具有副作用的表达式。例如,

val x = ref 5
val _ = (x := !x + 1; x := !x+ 2)

但这种用法很少见。

smlnj repl 仅在看到分号时才评估声明,因此只要您想查看或使用该值,就应该使用分号。我觉得use "foo.sml";case 令人困惑,因为它不是声明;这是一个表达。我想 repl 会转换这样的表达式use "foo.sml" into val _ = use "foo.sml"。因此它需要分号来告诉 repl 真正运行它,如上所述。顺便说一句,没有什么特别的use。它只是类型的函数string -> unit.

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

何时在 SML 中使用分号? 的相关文章

  • Compressed Sparse Column format(CSC)

    CSR Compressed Sparse Row format 和CSC Compressed Spare Column format 都是一种稀疏矩阵的存储格式 这里分别给出实例 假设有如下矩阵 1360
  • 电信客户流失预测----科大讯飞xDataWhale

    记录第一次参加正式的数据挖掘竞赛 由科大讯飞xDatawhale举办的 电信客户流失预测挑战赛 报名链接 2022 iFLYTEK A I 开发者大赛 讯飞开放平台 一 赛题概要 赛题背景 随着市场饱和度的上升 电信运营商的竞争也越来越激烈
  • NJ 的 ML 中的嵌套本地声明

    大家好 我有这段代码 local helper f i j local fun NTimesF f n int if n 1 then fn x gt f x else fn x gt f NTimesF f n 1 x in if i l
  • 如何在 Mac 上安装 Standard ML 的工作版本?

    我使用的是 Mac OSX 10 7 5 但我似乎无法下载可用的 REPL 的标准 ML 编译器 这应该有这么难吗 我应该下载一个最好的 ML 吗 我尝试过 SML NJ 和 MLton 但没有成功 Mac 用户也可以使用 brew ins
  • 这个函数签名在sml中是什么意思?

    我正在查看我的教授关于 SML 语言的一些注释 其中一个函数如下所示 fun max gt let fun lp curr curr lp curr a l if gt a curr then lp a l else lp curr l i
  • 如何在 SML/NJ 中进行按位与运算?

    我正在编写的程序需要它 重复平方来计算 x n 我似乎找不到它的语法 或者是否支持它 它们可在Word8 and Word结构 let open Word8 infix andb orb xorb notb lt lt gt gt gt g
  • 为什么我的 ML 函数推断的类型与我预期的不同?

    我做了一个函数 它的名字是maptree 下面是我的代码 datatype a tree LEAF of a NODE of a tree a tree fun maptree f NODE X Y NODE maptree f X map
  • 为什么我无法在标准机器学习中比较实数?

    为什么不1 0 2 0工作 不是real平等类型 它给出了错误 Error operator and operand don t agree equality type required operator domain Z Z operan
  • SML 中的霍纳算法? [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我正在尝试实施霍纳算法 http en wikipedia org wiki Horner 27s algorithm
  • 无法确定操作系统

    When I go on terminal i installed smlnj and i type sml it gives me the error sml unable to determine architecture operat
  • 修复 OCaml 中的数据类型

    Haskell 中的以下数据类型如何用 OCaml 或 SML 表示 newtype Fix f In f Fix f 我已经在邮件列表上回答了这个问题 https sympa inria fr sympa arc caml list 20
  • ML 中 ref 函数的用法

    考虑到 ref 运算符 我很难理解它的应用以及以下指令的含义 1 在这个定义中我定义什么 val ref x ref 9 val x 9 int 2 我在这里用 ref x ref 12 做什么 val x ref 8 val x ref
  • 用 OCaml 编写解释器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在大学学习一门课程 要求我从操作语义开始 用 OCaml 编写一种语言的解释器 不幸的是 除了课程
  • SML/NJ:如何使用哈希表?

    我真的很想在 SML 中创建一个哈希表 似乎 SML NJ 中已经有一个结构 问题是 我该如何使用它 我还没有完全理解如何在SML中使用结构 并且我读过的书中的一些非常基本的示例给了我错误 我什至不知道如何纠正 所以使用HashTable结
  • 何时在 SML 中使用分号?

    我知道分号在 REPL 中用作终止符 但我对何时在源文件中使用它们感到困惑 例如 之后不需要val x 1 但如果我之后省略它use foo sml 编译器会抱怨它 那么 分号的使用规则是什么呢 分号用于 SML 中的许多语法实体 它们通常
  • 基于 SML 的文件查找

    有没有办法使用 SML Basis 库在特定位置打开文件 也就是说 使用操作系统调用来更改位置 而不是扫描文件并丢弃数据 这很棘手 不幸的是 不直接支持搜索 此外 文件位置仅对于二进制文件是透明的 即您使用BinIO结构 1 对于该结构体
  • StandardML 中的 y 组合器

    我知道我可以用 SML 编写 y 组合器 如下所示 首先声明一个新的数据类型来绕过由于循环而导致的类型不匹配 datatype a mu Roll of a mu gt a val unroll fn Roll x gt x 现在您可以轻松
  • 如何在SML中使用IntInf或LargeInt?

    我想通过此链接中的 pow 等函数在 SML 中执行大整数计算 http www standardml org Basis int inf html IntInf STR SPEC http www standardml org Basis
  • 使用 SML 和 HOL 推理规则从第一原理证明定理

    我正在尝试证明这个定理 p q lt gt q p thm将 SML 与 HOL 推理规则结合使用 这是 SML 代码 val thm1 ASSUME p bool q bool val thm2 ASSUME p bool val thm
  • SML 如何检查变量类型?

    有什么方法可以检查 测试变量的类型吗 我想这样使用它 if x int then foo else if x real then bar else if x string then else ML 语言是静态类型的 因此某个东西不可能在不同

随机推荐