对于方案中的每个和地图

2024-02-02

这两个功能在方案上有什么区别吗?我正在使用 Dr Racket R5RS 语言制作一个模拟器游戏,我无法决定哪个更好。


for-each从左到右计算列表元素上的给定函数,并丢弃函数的返回值。它非常适合对列表中的每个元素进行副作用操作。

map以不特定的顺序对列表元素上的给定函数求值(尽管大多数实现将使用从右到左或从左到右的顺序),并保存函数的返回值以返回给调用者。它非常适合对列表的每个元素进行纯功能处理。

如果返回值为map不会用,最好用for-each反而。这样,它就不必费心收集函数调用的返回值。

(旁白:在 Clojure 中,返回值map是一个惰性序列,这意味着给定的函数仅针对正在具体化的元素调用。)


技术实施细节。简化的单列表版本for-each通常是这样实现的:

(define (for-each func lst)
  (let loop ((rest lst))
    (unless (null? rest)
      (func (car rest))
      (loop (cdr rest)))))

非常简单,并且保证从左到右的顺序。与简化的单列表版本对比map:

(define (map func lst)
  (let recur ((rest lst))
    (if (null? rest)
        '()
        (cons (func (car rest)) (recur (cdr rest))))))

在Scheme中,未指定函数参数的求值顺序。所以对于像这样的表达式(foo (bar) (baz) (qux)),调用bar, baz, and qux可以按任何顺序发生,但它们都会在之前完成foo叫做。

在这种情况下,(func (car rest))可以先发生,也可以在之后发生(recur (cdr rest))。无论哪种方式都不能保证。这就是为什么人们说map不保证评估顺序。

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

对于方案中的每个和地图 的相关文章

  • php简单xml如何读取具有不同子节点级别的多个节点

    我有一个 xml 文件 其中包含不同的命名节点和多级子节点 每个节点之间都不同 我应该如何访问数据 需要很多嵌套的for循环吗 以下是 xml 代码示例
  • 创建一个打开文件并创建字典的函数

    我有一个正在处理的文件 我想创建一个读取文件并将内容放入字典中的函数 然后该字典需要通过 main 函数传递 这是主程序 它无法改变 我所做的一切都必须与主程序配合 def main sunspot dict file str raw in
  • 为什么字典排序是不确定的?

    我最近从 Python 2 7 切换到 Python 3 3 似乎在 Python 2 中 字典键的顺序是任意但一致的 而在 Python 3 中 通过例如获得的字典键的顺序是 vars https docs python org 3 li
  • 返回不包括指定键的字典副本

    我想创建一个函数 返回字典的副本 不包括列表中指定的键 考虑这本词典 my dict keyA 1 keyB 2 keyC 3 致电without keys my dict keyB keyC 应该返回 keyA 1 我想用一行简洁的字典理
  • 方案如何返回多个值?

    我注意到几乎所有方案函数只能返回一个列表作为输出 下面 我想返回邻居的所有相邻节点的多个值 define neighbors l w if and 1 l 1 w list and l 1 w and 1 l w how to output
  • 了解字典的深度

    假设我们有这个字典 d a 1 b c 了解嵌套的最直接方法是什么depth of it 您需要创建一个递归函数 gt gt gt def depth d if isinstance d dict return 1 max map dept
  • Smarty - foreach 循环 10 次并停止

    我使用以下 Smarty 代码 foreach from entries key i item topic if topic topic style question li a href topic php id topic id topi
  • 如何将 Python 字典序列化为字符串,然后再序列化回字典?

    如何将 Python 字典序列化为字符串 然后再序列化回字典 字典中将包含列表和其他字典 这取决于您想用它做什么 如果您只是想保存它 您应该使用pickle https docs python org 3 library pickle ht
  • Python 3 中的递归搜索 JSON/DICT

    我在 Python 3 中实现了一些 API 这些 API 允许我根据班级代码接收有关学校的信息 但我想知道如何通过类代码获取信息 例子 我输入代码GF528S我希望程序告诉我班级 3C INF 地址 Address 1 Milan 如果可
  • 将构造函数传递给 Array.map?

    我怎样才能做这样的事情 var a 1 2 3 4 a map Date constructor 此代码在 Google V8 上引发错误 SyntaxError Unexpected number 我也尝试过 a map Date con
  • Map.Entry 的比较器

    我有一个以枚举类型作为键 以 Double 作为值的 Map 我想根据 Double 值对其进行排序 所以我得到了条目集并想使用Collections sort 与比较器 我有以下比较器代码 class ScoreComparator
  • 迭代函数可以调用自身吗?

    当观看下面的 MIT 6 001 课程视频时 讲师在 28 00 将此算法标记为迭代 但是 在 30 27 他说这个算法和实际的 递归 算法都是递归的 该函数正在使用基本情况调用自身 那么这次迭代情况如何 private int itera
  • 将字符串转换为字典,然后访问键:值???如何访问 Python 中的数据?

    我在访问字典内的数据时遇到问题 系统 Macbook 2012Python Python 3 5 1 Continuum Analytics Inc 我正在与一个dask dataframe http dask pydata org en
  • 不明白 Swift 中的闭包示例

    我正在尝试了解 swift 和闭包 我被这个例子困住了 numbers map number Int gt Int in let result 3 number return result 什么是 number Int gt Int 它是一
  • C# 中字典的内存使用情况

    我有一些代码添加了嵌套字典 格式如下 Dictionary
  • 一段 R 代码会影响 foreach 输出中的随机数吗?

    我使用运行模拟foreach and doParallel并与随机数 名为random在代码中 简而言之 我模拟一个足球联赛 随机生成所有比赛的获胜者以及相应的结果 在dt base没有比赛进行 在dt ex1 and dt ex24场比赛
  • 将 NumPy 数组按元素映射到更多维度的数组

    我想要地图anumpy array从 NxM 到 NxMx3 其中三个元素的向量是原始条目的函数 lambda x f1 x f2 x f3 x 然而 像这样的事情numpy vectorize不允许改变尺寸 当然 我可以创建一个零数组并进
  • python:查找围绕某个 GPS 位置的圆的 GPS 坐标的优雅方法

    我有一组以十进制表示的 GPS 坐标 并且我正在寻找一种方法来查找每个位置周围半径可变的圆中的坐标 这是一个例子 http green and energy com downloads test circle html我需要什么 这是一个圆
  • R中的字典数据结构

    在 R 中 我有 例如 gt foo lt list a 1 b 2 c 3 如果我输入foo I get a 1 1 b 1 2 c 1 3 我怎样才能看透foo仅获取 键 列表 在这种情况下 a b c R 列表可以具有命名元素 因此可
  • 我在函数的最后一次递归调用中得到“方案应用程序而不是过程”

    所以这是代码 define time prime test n newline display n start prime test n runtime define start prime test n start time if pri

随机推荐

  • 如何确保 CSS :hover 应用于动态添加的元素

    我有一个脚本 当您将鼠标悬停在缩略图上时 它会在缩略图上动态添加完整图像 我还为完整图像提供了 CSS hover 样式 以使它们扩展到更大的宽度 通常它们被限制为缩略图的尺寸 如果图像加载速度很快或被缓存 这种方法效果很好 但如果完整图像
  • 导致 HttpHostConnectException 的原因是什么?

    我在搜索我的网站时具有自动完成 提前输入功能 我发现有时他们是与之相关的例外 我们正在使用代理服务器 org apache http conn HttpHostConnectException Connection to http prox
  • MVC4 HTML TextBoxFor 修改 ViewModel 后不工作

    我有一个我真的不明白的问题 我有一个非常简单的模型 其中有一个列表作为公共成员 每当我的控制器在回发时从模型中删除元素时 TextBoxFor HTML 帮助程序似乎不会接受更改 这些助手似乎正在缓存一些东西 但我无法确定它 演示 重现可以
  • Glassfish vhost 仅提供静态内容。禁用会话如何?

    我在服务器中有一个文件夹 其中包含所有图像 静态文件等 它是我的应用程序的存储 我需要在http 主机 8080 存储 http host 8080 storage 语境 此时 我在应用程序状态的应用程序根目录上安装了一个名为 存储 的符号
  • 在以下字符串聚合中寻找与 .groupby 相反的 pandas“ungroup by”操作?

    假设我们采用 pandas 数据框 name age family 0 john 1 1 1 jason 36 1 2 jane 32 1 3 jack 26 2 4 james 30 2 然后做一个groupby group df df
  • 无法让浏览器启动 Express 下载

    继从this https stackoverflow com questions 53981780 angular cannot get file download from express using res download nored
  • 使用 Spring 表达式语言访问属性文件

    我使用 Spring Boot 使用 Thymeleaf 创建了一个简单的 Web 应用程序 我使用 application properties 文件作为配置 我想要做的是将名称和版本等新属性添加到该文件并访问 Thymeleaf 中的值
  • “easy_install -U cython”未能抱怨 vcvarsall.bat 和 -mno-cygwin

    在Windows下 似乎easy install具有 C 依赖关系并不是很容易 尝试 1 vcvarsall bat errors 我正在安装cython在Windows7下 与MinGw 我修改了Windows7的PATH包括C MinG
  • 在 Switch 语句中使用 Double

    下面的所有值都是双精度值 但 switch 需要整数值 有没有办法解决 switch fivePercentValue case floor 5 fivePercentValue 100 fivePercent backgroundColo
  • 开源项目但对 API 密钥保密

    我想使用 GitHub API 创建一个开源项目 但我在源代码中遇到了我的密钥的问题 我从不同的地方读到 永远不要在源代码中包含任何密钥 我同意这一点 我还发现了一些关于通过网络服务器进行身份验证而不是让用户获取自己的 API 密钥的模糊参
  • Rails Byebug 没有停止应用程序

    我想使用 byebug 来调试我的应用程序 但应用程序永远不会停止 尽管我已经把byebug在我的代码中 这是我的 Gemfile group development test do Call byebug anywhere in the
  • 为什么使用 CvScalar

    我需要帮助来理解 CvScalar 的功能到底是什么 例如下面的代码中 scalar 的任务是什么 for int i 0 i lt faces size i Point center Point faces i x faces i wid
  • C 编译中出现错误“错误:杂散'\342'”,“杂散'\200'”,“杂散'\234'”[重复]

    这个问题在这里已经有答案了 I used 记事本 https en wikipedia org wiki Notepad 2B 2B编写代码 当我尝试编译它时 我使用cc lab7 c o test1编译它 我得到了一堆杂散 342 杂散
  • setup.py install_require 带选项

    我需要添加rjsmin通过我的依赖install require在 setup py 中 rjsmin提供了一种通过使用禁用 c 扩展的方法 without c extensions像下面这样切换 python setup py insta
  • 如何在Android上启动NotificationListenerService

    我想使用NotificationListenerService 访问Android 手机上的通知 我检查了很多教程 但找不到他们在哪里调用该服务 我应该在MainActivity 上使用bindService 还是startService
  • 使用 doctest 测试异常链接和回溯输出

    如何使用 doctest 测试 多重回溯 看来要用几个ELLIPSIS and
  • 在 Angular 中页面加载(模态显示)后焦点输入后在 Safari iOS 中显示键盘

    我需要在页面加载或显示输入模式后设置焦点并打开键盘 简单的 focus 适用于 Android 以及 iPad 的横向模式 然而 在纵向模式和 iPhone 上 焦点已设置 但未显示键盘 我还尝试了添加并关注附加元素的解决方案 但它不适用于
  • Python 变量作用域和类

    在Python中 如果我定义一个变量 my var 1 2 3 并尝试访问它 init 类的功能 class MyClass def init self print my var 我可以访问它并打印my var没有说明 全局 my var
  • VSCode 找不到 python(Anaconda 安装)

    我刚刚在 windows10 上安装了 anaconda3 5 2 0 和 vscode 1 27 2 实际上是删除并重新安装 并尝试在终端上执行最简单的 python 代码 但是 我收到以下错误 jac p50 mnt c Users j
  • 对于方案中的每个和地图

    这两个功能在方案上有什么区别吗 我正在使用 Dr Racket R5RS 语言制作一个模拟器游戏 我无法决定哪个更好 for each从左到右计算列表元素上的给定函数 并丢弃函数的返回值 它非常适合对列表中的每个元素进行副作用操作 map以