number_in_month 练习(SML 中多个列表的迭代)

2023-12-11

我在 SML 中有两个列表,假设列表 A[(a,b,c),(d,e,f)]和列表B[b,e]。我想计算 B 中每个项目与 A 中每个三元组的第二个元素匹配的次数。输出应该是 2。因为b and e每个在 A 中出现一次。

到目前为止,这是我的代码,但是当我从 B 中的一个元素移动到另一个元素时,我的计数器始终设置为 0。我知道在 Java 中这只是一个简单的双 for 循环。

fun number_in_months (d : (int * int * int ) list, m : (int) list) = 
    if null m then 0 
    else if null d then number_in_months(d, tl m)
    else if (#2(hd d)) = (hd m) then 1 + number_in_months (tl d, m)
    else number_in_months(tl d, m)

该代码不会在递归调用之间累加值。还可能存在其他逻辑错误。

使用递归和函数累加值是一种常见模式,您可以阅读更多相关内容here。它的本质是使用解构列表head and tail直到列表为空并在每次调用时积累一些值。这sum下面的函数是一个简单的例子来说明这一点。这可以适应你的例子来积累acc when b or e被发现于list A.

fun sum(numbers: (int) list) =
  let fun sumR(numbers: (int) list, acc: int) =
    if null numbers
    then acc
    else
      sumR(tl numbers, hd numbers + acc)
  in
    sumR(numbers, 0)
  end

运行于[1,2,3] gives:

val sum = fn : int list -> int
- sum([1,2,3]);
val it = 6 : int

请注意,我故意对这个答案含糊其辞,因为这是一个有关 Coursera 编程语言课程作业的问题。

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

number_in_month 练习(SML 中多个列表的迭代) 的相关文章

  • Windows系统 Emacs运行SML REPL控制台报错 “Searching for program: no such file or directory, sml“

    首先保证在smlnj官网 xff0c 下载并安装了SMLNJ xff0c 然后再检查Emacs是否安装sml mode xff08 需要注意的是Emacs的sml mode只是一种Emacs的编辑模式 xff0c 并不包含SML的编译器之类
  • SML 警告:使用空列表或 NONE 选项时,类型变量未通用化

    我一生都无法弄清楚为什么以下 SML 函数在我的作业问题中抛出警告 fun my func f ls case ls of gt raise MyException head rest gt case f head of SOME v gt
  • 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
  • 抑制标准 ML 中的“val it”输出

    我正在用标准 ML SML NJ 编写一个 脚本 根据我的喜好设置交互式环境 该脚本所做的最后一件事是打印一条消息 表明一切顺利 本质上 最后一行是这样的 print SML is ready n 当我运行脚本时 一切顺利 但 SML 解释
  • 这个函数签名在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
  • number_in_month 练习(SML 中多个列表的迭代)

    我在 SML 中有两个列表 假设列表 A a b c d e f 和列表B b e 我想计算 B 中每个项目与 A 中每个三元组的第二个元素匹配的次数 输出应该是 2 因为b and e每个在 A 中出现一次 到目前为止 这是我的代码 但是
  • SML - 未绑定变量或构造函数

    我有下一个代码 datatype expr K of string Number2 of expr expr list datatype number Number1 of string Number3 of int fun append
  • 通过索引变量访问 SML 元组

    问题很简单 如何在SML中使用索引变量访问元组 val index 5 val tuple1 1 2 3 4 5 6 7 8 9 10 val correctValue index tuple1 我希望有人能够提供帮助 提前致谢 不存在接受
  • 记录列表上的SML功能

    我试图声明一个函数 该函数将元组内的记录列表作为参数 但语法并不像我希望的那样直观 这就是我想做的 type Player id int privateStack int list fun foo id x xs Player player
  • SML:为什么函数总是采用一个参数使语言变得灵活

    我 从一本 SML 书中 了解到 SML 中的函数总是只接受一个参数 一个元组 接受多个参数的函数只是一个接受一个元组作为参数的函数 通过函数绑定中的元组绑定来实现 我明白这一点 但在这之后 书上说了一些我不明白的话 this point
  • 何时在 SML 中使用分号?

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

    我是标准机器学习的新手 并尝试编写以下代码 fun whilestat test stmt1 fn x gt if test x then stmt1 x whilestat test stmt1 else x 问题是它给了我以下错误 w
  • 基于 SML 的文件查找

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

    我想通过此链接中的 pow 等函数在 SML 中执行大整数计算 http www standardml org Basis int inf html IntInf STR SPEC http www standardml org Basis
  • 标准机器学习中的结构比较

    我似乎找不到关于为什么这不起作用的参考 2000 1 lt 2000 1 stdIn 18 1 18 18 Error operator and operand don t agree overload operator domain Z
  • 这种模式似乎很详尽,但我仍然收到警告

    我正在学习 sml 并编写了以下简单函数 Return a list with every other element of the input list fun everyOther everyOther x x everyOther x
  • 使用 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
  • 通过 Emacs 评估 ghci 或 Hugs 中的缓冲区

    在 Emacs 中使用 sml mode 我已经能够使用以下命令将缓冲区内容直接发送到较差的 SML 进程C c C b 现在我只想用 Haskell 做同样的事情 Haskell 模式似乎不支持这一点 所以我想知道 使用 Emacs 和
  • PolyML 函数和类型

    一对函数tofun int gt a gt a and fromfun a gt a gt int这样 fromfun o tofun n评估为n对于每一个n int 任何人都可以向我解释这实际上要求什么 我正在寻找更多对此的解释 而不是实

随机推荐

  • jQuery 在 div 标签内添加图像

    我有一个 div 标签 div Where is the image div 我想在 div 内添加一个图像标签 最终结果 div img src theImg png Where is the image div 您是否尝试过以下操作 t
  • LibGdx 2 半屏“按钮”

    Android 所以我是 LibGdx 的新手 我正在尝试编写这个 chrome 恐龙迷你游戏 我想在用户触摸屏幕左侧时执行操作 1 并在触摸屏幕右侧时执行操作 2手边的屏幕 我该怎么办 您可以通过在游戏循环中的某处使用以下代码来检测被触摸
  • cs50的tideman lock_paiors函数问题

    大家好 我的 pset3 上的锁对功能有问题 tideman 希望得到一些反馈 bool checkcycle int from int to if from to return true int i for i 0 i lt candid
  • IIS 6.0 中是否有相当于 Apache 的 auto_prepend_file 的功能

    在 LAMP 堆栈上我可以使用 gt php value auto prepend file bootstrap php 在 htaccess 中引导一系列我想在处理任何页面之前执行的命令 是否可以在 IIS 6 0 中执行相同的操作 更新
  • Java 正则表达式转大写

    所以我有一个像这样的字符串 2000cc 车辆翻新发动机 我想把它变成 2000CC 车辆翻新发动机 2000CC 上的大写字母为 cc 我显然做不到text replaceAll cc CC 因为它将用大写版本替换所有出现的 cc 因此单
  • 检测编译后的perl脚本是否动态加载模块

    我正在使用 Strawberry Perl 运行 Windows 10 我用PAR 打包机模块来制作我的一些 Perl 脚本的可执行版本 我发现有些模块例如XML LibXML 需要安装 Perl 才能运行可执行文件 由于我是为没有 Per
  • R范围:在没有本地环境的情况下强制函数中的变量替换

    我在循环中定义函数 并尝试强制评估循环变量 而不必携带私有环境 示例 一组函数handlers h1 handlers h2 handlers h6只是将 1 2 6 传递给另一个函数 如下所示 handlers lt list for i
  • 迭代器的默认值是多少?

    对于我正在使用的任何 STL 容器 如果我使用迭代器的默认构造函数声明一个迭代器 此特定容器类型 则迭代器将被初始化为什么 例如 我有 std list
  • 返回指向静态局部变量的指针安全吗?

    我正在处理一些广泛使用返回指向静态局部变量的指针的习惯用法的代码 例如 char const GetString static char sTest 5 strcpy sTest Test return sTest 我认为这是安全的 对吗
  • 快速删除 Unicode U+2018 左单引号,例如“Ali 到 Ali”

    如何从字符串中删除 Unicode U 2018 左单引号 古拉姆 阿里 阿里 凯尔 阿里 谢尔 阿拉卡达里 我想删除出现的 A 一个 你 字符串中的 u 分别为 A a U u I tried var myString Sozmah Qa
  • pyinstaller 无法执行脚本 pyi rth pkgres

    我有一个用 pyinstaller 制作的 exe 文件 当我尝试运行它时 它给了我这个错误 ModuleNotFoundError 没有名为 pkg resources py2 warn 的模块 50728 无法执行脚本 pyi rth
  • 使用 AIDL 处理跨进程错误的推荐方法 (Android)

    我有一个活页夹服务和一个位于不同进程中的客户端 使用 AIDL 当客户端调用我的远程 Binder 服务时 有时我需要将错误 异常 转发回客户端 然而 根据我的理解 这是不可能的 我尝试从活页夹服务中抛出 RemoteException 看
  • 使用大数组进行反向地理编码是最快的方法吗? - JavaScript 和性能

    我有很多观点Google Maps我想为每个点显示最近的城市 因此是反向地理编码 我有一个像这样的多维数组 citta vicine var comuni Abano Terme PD 45 3594 11 7894 Abbadia Cer
  • NetBeans功能如何关闭

    我已经安装了 NetBeans 15 他们默认打开了一个功能 我觉得这个功能非常分散注意力 我该如何关闭它 它是下图中突出显示的代码 这是不可编辑的额外文本 对我来说只是妨碍 先感谢您 感谢一位同事找到了答案 关闭下面的 显示内联提示
  • R 中不同颜色组合的堆积条形图

    我需要从表单的数据创建一个堆积条形图c a b a 和 b 由 c 标准化 使得 a 和 b 加起来为 1 我拥有的数据需要特定的格式 因此 a 和 b 需要是列表 下面是给定这些特定格式的最简单的可重现示例 A list 2 1 1 2
  • 是否需要构建 boost.signals2 库?

    我的系统在构建 boost 库时遇到问题 我知道大多数 boost 库 幸运的是 只是不需要构建的标头 有一些例外 是否需要构建 boost signals2 库 boost signals2 库也依赖于 boost signals 库吗
  • 使用 C 解析 URL 的最佳方法?

    我有一个像这样的网址 http 192 168 0 1 8080 servlet rece 我想解析 URL 来获取值 IP 192 168 0 1 Port 8080 page servlet rece 我怎么做 就我个人而言 我偷了HT
  • 除了在每次闭包之前克隆它之外,还有其他选择在多个闭包中共享 Arc 吗?

    我有这样的事情 use std sync Arc fn main let arc Arc new 42 move arc clone move arc clone 我正进入 状态 error E0382 capture of moved v
  • 如何实现标签系统

    我想知道实现标签系统的最佳方法是什么 就像 SO 上使用的那样 我正在考虑这个问题 但我无法想出一个好的可扩展解决方案 我正在考虑有一个基本的 3 表解决方案 有一个tags桌子 一个articles桌子和一个tag to articles
  • number_in_month 练习(SML 中多个列表的迭代)

    我在 SML 中有两个列表 假设列表 A a b c d e f 和列表B b e 我想计算 B 中每个项目与 A 中每个三元组的第二个元素匹配的次数 输出应该是 2 因为b and e每个在 A 中出现一次 到目前为止 这是我的代码 但是