SML 和函数式编码风格

2024-02-18

我开始学习标准机器学习编程语言 https://www.coursera.org/course/proglang course.

在第一个作业中,我尝试编写一个函数is_older需要两个日期并评估为true or false。它评估为true如果第一个参数是第二个参数之前的日期(如果两个日期相同,则结果为false.).

所以我写了下面的代码:

fun is_older(first: int * int * int, second: int * int * int) =
  if(#1 first = #1 second andalso #2 first = #2 second andalso #3 first = #3 second) then false
  else if (#1 first < #1 second) then true
  else if (#1 first = #1 second andalso #2 first < #2 second) then true
  else if (#1 first = #1 second andalso #2 first = #2 second andalso #3 first < #3 second) then true
  else false

该代码工作正常,但看起来很丑。

如何以函数式风格重写这段代码?


两个建议:

  • 使用模式匹配来分解元组。
  • 使用布尔运算符 (andalso, orelse等)时if/else构造返回布尔值。

更易读的版本:

(* Compare two dates in the form of (year, month, day) *)
fun is_older((y1, m1, d1), (y2, m2, d2)) =
  y1 < y2 orelse (y1 = y2 andalso m1 < m2) 
  orelse (y1 = y2 andalso m1 = m2 andalso d1 < d2)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SML 和函数式编码风格 的相关文章

  • 任何遍历嵌套字典的函数式编程方法?

    我正在尝试找到更好的方法来实现这一点 d a b c 4 l a b c for x in l d d x print d 4 我正在学习函数式编程 所以我只是尝试随机出现的例子 Use reduce http docs python or
  • Clojure 函数 - 返回最后一条语句之前计算的值

    我有一些用 Clojure 编写的测试 这是一个简单的例子 defn test1 start server run pvt and expect PVT 0 stop server 我想返回 run pvt and expect 的结果 但
  • 阻塞事件循环

    我正在通过 Nodeschool 参加 函数式 Javascript 研讨会 其中一项练习的标题是 阻止事件循环 我很难理解它 通过过去的练习 我确保真正尝试理解解决方案 这样如果我必须重做问题 我就会理解如何解决它 而不是第一次就破解它
  • 功能段落

    抱歉 我还不太明白 FP 我想将一系列行分割成一系列行序列 假设一个空行作为段落划分 我可以在 python 中这样做 如下所示 def get paraghraps lines paragraphs paragraph for line
  • 将命令行参数传递给 SML 脚本

    如何将命令行参数传递给 SML 脚本 我知道有一个CommandLine arguments 正确类型的函数 unit gt string list 但像这样调用解释器 sml script name sml an argument ano
  • 如何根据列表中的先前值过滤Haskell中的列表元素?

    我正在努力在 Haskell 中创建一个函数 该函数根据列表中前一个元素的条件过滤列表的数字 Example 前一个数字是 2 的倍数 myFunction 1 2 5 6 3 expected output 5 3 我知道如何申请filt
  • 与可变结构相比,不可变结构有哪些优点?

    我已经知道不变性相对于可变性的好处在于能够推理代码并引入更少的错误 尤其是在多线程代码中 不过 在创建结构时 我看不出创建一个完全不可变的结构比创建一个可变的结构有任何好处 让我们以保存一些分数的结构为例 struct ScoreKeepe
  • number_in_month 练习(计算列表中的元素数)

    我一直在尝试使用 SML 对整数 3 元组列表中的元素进行计数 该列表等于给定的整数 但它不起作用 谁能帮我找出下面的代码有什么问题或者为我纠正它 fun number in month x int int int list m int i
  • 使用 ocaml List.fold_left 列表中的最后一个元素

    我可以通过以下代码找到列表的最后一个元素 let last xs a list a let rec aux xs prev match xs with gt prev x ys gt aux ys x in match xs with gt
  • 如何在 Haskell 中获得列表的中间位置?

    我刚刚开始使用 Haskel 学习函数式编程 我正在慢慢度过Erik Meijer 在 Channel 9 的讲座 http channel9 msdn com shows Going Deep Lecture Series Erik Me
  • 函数式编程是否需要新的命名约定?

    我最近开始使用 Haskell 学习函数式编程 并在 Haskell 官方 wiki 上发现了这篇文章 如何阅读哈斯克尔 http www haskell org haskellwiki How to read Haskell What t
  • 在 C# 中实现记忆化 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我知道这个话题 记忆 已经被讨论了很多 比如here https stackoverflow com questions 285216
  • Swit 中的函数式编程将数组元素分配到正确的“桶”

    我是函数式编程的新手 我的问题是我有一个主数组和固定数量的 目标 数组 我想根据每个元素的特定值将主数组中的元素分配到正确的结果数组中 我猜测一种方法是使用一个映射函数来遍历主数组元素 确定正确的 目标数组 值 基于某种逻辑 然后将元素添加
  • f# 运行总计序列

    好吧 这看起来应该很容易 但我就是不明白 如果我有一个数字序列 如何生成由运行总计组成的新序列 例如 对于序列 1 2 3 4 我想将其映射到 1 3 6 10 以适当的功能方式 Use List scan https msdn micro
  • 如何在 Perl 中以函数式风格进行编码?

    你如何 have a sub返回一个sub or 将文本作为代码执行 in Perl 另外 如何拥有匿名函数存储状态 子返回子作为coderef example 1 return a sub that is defined inline s
  • 什么样的函数被认为是“可组合的”?

    维基百科文章函数组合 计算机科学 https en wikipedia org wiki Function composition computer science says 就像数学中通常的函数组合一样 每个函数的结果作为下一个函数的参数
  • 正确使用术语 Monoid

    从下面的例子来看 我认为这样的说法是正确的String在串联运算下定义了一个幺半群 因为它是关联二元运算 并且String碰巧有一个身份元素 它是一个空字符串 scala gt Jane Doe Jane Doe res0 Boolean
  • 数量重新分配逻辑 - 具有外部数据集的 MapGroups

    我正在研究一种复杂的逻辑 需要将数量从一个数据集重新分配到另一个数据集 在例子中我们有Owner and Invoice 我们需要从数量中减去Invoice准确地Owner匹配 在给定汽车的给定邮政编码处 减去的数量需要重新分配回同一辆车出
  • 你为什么决定“反对”使用 Erlang?

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 你是否真的 尝试过 意味着在其中编程 而不仅仅是阅读有关它的文章 Erlang并决定在项目中不
  • 使用 RxJava 限制吞吐量

    我现在遇到的情况很难解释 所以我会写一个更简单的版本来解释这个问题 我有一个Observable from 它发出一系列由ArrayList文件数量 所有这些文件都应上传到服务器 为此 我有一个函数可以完成这项工作并返回一个Observab

随机推荐

  • 使用代理时如何停止 NodeJS“Request”模块更改请求

    抱歉 如果这听起来令人困惑 我使用 NodeJS 请求模块编写了一个脚本 该模块在网站上运行并执行函数 然后返回数据 当我不使用代理时 通过将其设置为 false 该脚本工作得非常好 这不是不允许使用 Selenium puppeteer
  • 以编程方式获取Android中传入和传出呼叫的通话记录

    我正在制作一个应用程序 我想在其中获取所有来电 去电和未接来电的通话记录 我怎样才能做到这一点 这里的所有答案都使用managedQuery现在已弃用 它应该替换为getContext getContentResolver query 方法
  • 什么时候适合使用 C++11 *_until 超时函数而不是相应的 *_for 函数?

    在 C 11 中 until仅当使用稳定时钟 即仅以不变的速率向前移动的时钟 时 超时函数才会 按预期 运行 因为system clock不是一个稳定的时钟 这意味着像这样的代码的行为可能会非常令人惊讶 using namespace st
  • React Web 应用程序现在无法正常工作或部署

    I do not understand what I am doing wrong here It worked absolutely fine before this I was ready to deploy it to GitHub
  • C# 中的日期计算[重复]

    这个问题在这里已经有答案了 在我的应用程序 c 中我需要添加n距离今天的日期还有几天 我知道我可以使用DateTime AddDays n 方法 而且这个方法效果很好 但在我的情况下 我只想添加工作日 或仅添加 星期一 和 星期五 或任何其
  • 禁用 CAST AS 以优化实体框架中的查询

    我在用着实体框架5我想从中选择数据甲骨文10g数据库 问题是数据库表很大并且生成的查询实体框架是无效的 我想摆脱那些CAST column AS type 有什么设置可以关闭它们吗 C code var context new APPDB
  • 正则表达式可以是数字字符,也可以是字母数字但不仅仅是字母字符

    要验证必须同时包含数字和字母的字段 我可以使用 0 9 a zA Z a zA Z 0 9 0 9a zA Z 但我想另外接受仅数字字符串 你的意思是你至少想要一个号码 您可以使用前瞻断言 d a z d i
  • Pandas 获取映射函数中元素的索引

    我正在使用 pandas 来分析到不同节点的现有 ssh 会话 因为我已经解析了 ssh 守护进程日志 并且我有一个包含以下列的 DataFrame Node 建立连接的节点名称 会话 会话ID Start 指示连接何时开始的时间戳 Fin
  • 我应该如何为最终的 64 位编译器准备 32 位 Delphi 程序? [复制]

    这个问题在这里已经有答案了 可能的重复 迁移到 Delphi 2010 和 Unicode 时如何为 64 位做好准备 https stackoverflow com questions 1568685 how to also prepar
  • 从java调用带有表值参数的存储过程

    在我的应用程序中 我想执行类似的查询SELECT FROM 表 WHERE col IN list 其中 list 可以有可变的值 我正在使用 MS SQL 服务器数据库 当我用谷歌搜索这个问题时 我发现了这个链接 http www som
  • 如何检查 Kafka 中的消费者是否消费了某个主题

    如何检查特定消费者群体是否完全消费了某个主题 这相当于在标准排队系统中检查队列是否为空 这并不明显 因为每个消费者只能看到给定的分区 因此它不知道其组中的其他消费者是否消耗了他们的部分 我想这应该以某种方式完成AdminUtils or Z
  • 如何使div相对于父级的高度为100%?

    我坚持下面这样的事情 我需要将右上 div 设为 100 高度 其背景颜色将覆盖主 div 的整个高度 div style width 100 margin auto text align left border 1px solid 628
  • Magento 2 标签翻译显示大括号

    显示双花括号之间的多个翻译的标签 我在 Magento 2 的前端和后端都遇到这个问题 这是我到目前为止所尝试过的 清除并刷新缓存 重新部署静态内容 将 Magento 2 2 5 更新至 2 2 6 请查看图片以获取更多信息 Magent
  • 如何获取 JavaFX 中某个阶段的关闭事件?

    在JavaFX中 如果用户单击阶段的关闭按钮 X 最右上方的十字 如何获取事件 我希望我的应用程序在窗口关闭时打印调试消息 System out println Application Close by click to Close But
  • 为什么表别名通常都是小写?

    我总是这样看例子 但为什么呢 这是一个好的做法吗 因此它们与查询的其余部分 通常以大写形式编写 不同 至于这是否是最佳实践 如果您以全部大写形式编写查询 那么它肯定会使您的查询更易于阅读和理解
  • 如果代码中没有 return 语句,函数在 C 程序中返回什么

    我做了一个关于如何在 C 中递归地反转单链表的函数 功能如下 struct node reverseSLL2 struct node p struct node temp struct node temp1 if p NULL temp1
  • NEST 查询精确文本匹配

    我正在尝试编写一个 NEST 查询 该查询应根据精确的字符串匹配返回结果 我在网上研究过 有关于使用术语 匹配 匹配短语的建议 我已经尝试了所有这些 但我的搜索返回的结果包含部分搜索字符串 例如 在我的数据库中 我有以下几行电子邮件地址 电
  • 如何实施xgboost增量训练?

    问题是由于列车数据大小 我的列车数据无法放入 RAM 中 所以我需要一种方法 首先在整个训练数据集上构建一棵树 计算残差构建另一棵树等等 就像梯度提升树一样 显然如果我打电话model xgb train param batch dtrai
  • Rails 选择 GROUP 中 COUNT 最高的对象

    目标是选择Store其中一个Coupon最常用于 目前 我有这个 并且它有效 分解以供解释 coupon rb has many redemptions has and belongs to many stores def most pop
  • SML 和函数式编码风格

    我开始学习标准机器学习编程语言 https www coursera org course proglang course 在第一个作业中 我尝试编写一个函数is older需要两个日期并评估为true or false 它评估为true如