在Scheme中实现“累计”功能

2024-01-08

几周来我一直在尝试实现 Accumulate 函数。我已经正确实现了一个“Map”函数,它遍历列表并在每个元素上运行一个函数。

我正在使用这个函数来实现“累积”

   (define accumulate
  (lambda (op base func ls)
    (if(null? ls)
       ls
   (cond (not (null? (cdr ls)) (op base (map func ls) (accumulate op base func (cdr ls))))
       (op base (map func ls) (op base (func(car ls))))
   )
     )))
    ;It gets to a point (the last element) after applying the map function to each element,
    ;where it is '(number) instead of an expected "number" (outside of () ). I cannot figure out
    ;how to circumvent this.

我一直不知道如何解决这个问题。这样做的正确方法是什么?

预期结果是:

; accumulate: combines using OP the values of a list LS after mapping a function FUNC on it
;    (accumulate + 0 sqr '(1 2 3)) => 14
;    (accumulate * 1 sqr '(1 2 3)) => 36
;

您想要实现适用于列表的折叠过程,您不需要使用map,简单地依次处理每个元素。这是更喜欢它:

(define accumulate
  (lambda (op base func ls)
    (if (null? ls)
        base
        (op (func (car ls))
            (accumulate op base func (cdr ls))))))

例如:

(accumulate + 0 sqr '(1 2 3))
=> 14

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

在Scheme中实现“累计”功能 的相关文章

随机推荐

  • Angular 2:子路由的多个

    使用 Angular 2 有什么方法可以让子路由不显示到主标签中
  • 如何在 GitKraken 中查看提交?

    使用 GitKraken 来检查提交似乎是不可能的 正如您所看到的 没有选项可以签出较旧的提交 只能Cherrypick commit但我不知道这有什么好处 编辑 我可以通过控制台使用另一个 git 程序 git bash 结帐 现在在 G
  • 如何使用 --header 选项通过 Siege 发送 cookie?

    我刚刚开始使用 Siege 在新的 Web 服务器上进行负载 压力测试 我正在尝试测试我的资源 性能最重的脚本 但该脚本需要cookie 在 siege 中使用 header 选项的正确格式是什么 我尝试过这个但没有运气 siege hea
  • 通过具有 NaN 值的数据帧更新数据帧

    我尝试更新 DataFrame df1 pd DataFrame data A 1 2 3 4 B 5 6 7 8 通过另一个 DataFrame df2 pd DataFrame data B 9 np nan 11 np nan 现在我
  • 计算列存储聚合计数

    我希望计算列存储来自另一个表的计数总计 我该怎么做 以下工作是否有效 创建表样本 列 1 AS SELECT COUNT FROM table2 PERSISTED 对于 SQL Server 您可以使用索引视图 http technet
  • “检查 S3 通用/方法一致性...警告”的说明

    我试图理解 S3 功能的 R CMD 检查警告 因此 这是我的情况的一个完全可重现的示例 包括 R 代码和 roxygen 代码 我永远无法在任何地方找到 S3 的完整示例 并且包中的实际使用要么过于复杂 要么记录不足 因此 希望这对其他实
  • 懒加载Spring bean

    如果一个bean是延迟加载的 那么延迟加载的bean中定义的所有bean都会被延迟加载吗 即使它们没有定义 Lazy 这是测试项目 https github com madhur conditional property test blob
  • 在 64 位环境中使用 32 位 COM 对象

    我在 Win7 64bit 上使用 powershell 3 我正在尝试通过以下命令使用 net of excel 32bit microsoft office interop excel xl文件格式 我得到了这个错误 无法找到类型 mi
  • 在 R 中编织为 PDF

    我是 R 新手 正在尝试将 R Markdown 文件编织成 PDF 格式 我不断收到错误消息 pandoc 找不到 pdflatex pdf输出需要pdflatex 错误 pandoc 文档转换失败 错误 41 执行停止 未检测到 TeX
  • 有哪些使用有限元来求解结构二维和三维框架的 python 库? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • python 关闭文件描述符问题

    我认为这个问题更多的是 编码风格 而不是技术问题 说我有一行代码 buf open test txt r readlines 文件描述符会自动关闭 还是会留在内存中 如果文件描述符未关闭 关闭它的首选方法是什么 如果将文件对象分配给变量 则
  • 直接在主页登录/注册

    例如 我希望用户可以直接登录主页 而不是在页面 account login 上登录 我应该做什么才能使它成为可能 如何将主页上的输入字段与 allauth 连接 我不知道这是否太复杂而无法以这种方式工作 有一个适合我的解决方案 这不是最佳解
  • 有没有办法使用 OpenLayers 更改 openstreetmap 中某些要素的颜色?

    我正在使用 OpenLayers 来显示 openstreetmap 有没有办法编辑地图上的某些功能 例如改变水的颜色 消除国家之间的边界等 如果不能使用 JavaScript 来完成 我猜还有其他方法可以做到这一点 比如托管您自己的地图版
  • Django 模型选择:IntegerField 与 CharField

    TL DR 我有一个包含数百万个实例的表 我想知道应该如何为其建立索引 我有一个使用 SQL Server 作为数据库后端的 Django 项目 在生产环境中拥有大约 1400 万个实例的模型后 我意识到遇到了性能问题 class User
  • 使用 DataContext Attach 方法更新实体时更新检查问题

    我正在尝试在通用存储库中创建一个更新方法作为 LINQ to SQL 数据访问层 我有一个这样的实体 Table public class Product Column IsPrimaryKey true IsDbGenerated tru
  • 查找存储在字符数组中的函数的导数

    我需要做的是读取包含方程的文件 我需要计算每个方程的导数 然后将这些导数方程写入不同的 txt 文件中 我已将所有方程读入字符数组数组中 现在我不知道将它们存储到数组中后该怎么办 我真的不需要帮助将方程写入另一个文件 我知道我能解决这个问题
  • 将带有 List 的字典转换为 IEnumerable

    我有一本字典 Dictionary
  • jQuery $.inArray() 无法与使用 jQuery makeArray() 制作的数组正常工作

    我用这个创建了一个日期数组 var holidays 7 24 2010 7 25 2010 var holidaysArray jQuery makeArray holidays 然后测试数组中是否存在 myDate 日期对象 if in
  • 组合多个Powershell脚本

    当将多个 Powershell 脚本组合在一起时 如 mklement0 在他的回答中所示将多个 Powershell 脚本转换为 EXE https stackoverflow com a 59288784 139212 有没有办法考虑嵌
  • 在Scheme中实现“累计”功能

    几周来我一直在尝试实现 Accumulate 函数 我已经正确实现了一个 Map 函数 它遍历列表并在每个元素上运行一个函数 我正在使用这个函数来实现 累积 define accumulate lambda op base func ls