代理递归函数

2024-05-24

想象一个简单的递归函数,我们试图包装它以检测输入和输出。

// A simple recursive function.
const count = n => n && 1 + count(n-1);

// Wrap a function in a proxy to instrument input and output.
function instrument(fn) {
  return new Proxy(fn, {
    apply(target, thisArg, argumentsList) {
      console.log("inputs", ...argumentsList);
      const result = target(...argumentsList);
      console.log("output", result);
      return result;
    }
  });
}

// Call the instrumented function.
instrument(count)(2);

但是,这仅记录最顶层的输入和输出。我想找到一种方法来拥有count递归时调用检测版本。


该函数调用count,这就是您需要包装的内容。你可以做任何一个

const count = instrument(n => n && 1 + count(n-1));

or

let count = n => n && 1 + count(n-1);
count = instrument(count);

对于其他一切,您需要将递归调用的函数动态注入到检测函数中,类似于 Y 组合器的做法。

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

代理递归函数 的相关文章

随机推荐

  • 如何检查应用程序是否违反 Google 的假冒政策

    我的应用程序已从 Google Play 商店中删除 原因如下 经审核 我的应用 有 由于政策罢工而被暂停并从 Google Play 中删除 因为 它违反了假冒政策 有没有其他方法可以在发布之前检查应用程序是否遵守所有 Google 政策
  • nuxt中根据url参数动态加载组件

    我在 nuxt 中有一个页面 分为两部分 第一部分是一个普通的模板结构 填充了基于 url 参数的动态内容 第二部分是应根据此数据加载的组件 我正在尝试这样完成它
  • ASP.NET Web 应用程序中的身份验证遇到问题

    我正在尝试对从登录页面登录我的 Web 应用程序的用户进行身份验证 我正在使用本教程 http support microsoft com kb 301240作为指南 它几乎准确地解释了我希望做什么 但是当我输入用户名和密码时 验证不起作用
  • 从R中的序列中随机提取多个连续项

    Frag lt seq 1 30000 K lt 9 P lt sample 1 K 1 sys sample lt Frag seq P length Frag K 现在 sys sample 包含 3333 个数字 如何在R中随机提取1
  • CodeIgniter 删除 index.php 和 .htaccess

    我已经为此工作了一个小时 所以我想我不妨问一下 我正在尝试从 CodeIgniter 应用程序的 URL 中删除 index php 但无法执行此操作 该应用程序在我办公室的专用服务器上运行 我通过 url 访问该应用程序http smr
  • 从 HealthKit 获取昨天的步数

    我正在构建一个供个人使用的应用程序 目前我正致力于如何从 healthkit 中准确获取昨天的步数 然后从那里将其放入变量中 我知道应该很容易 我有一个 HealthKitManager 类 它从视图内部调用该函数 然后将其附加到同一视图中
  • 将查询参数添加到 URL

    我正在尝试自动从网站下载数据 我需要将动态参数传递到每天更改的站点 html 的结构是表格而不是表单 如何传递参数并从 url 获取结果 这是我尝试过的 它需要在 python 2 7 中 import urllib url https d
  • 计算div标签内img标签的数量

    我的代码是这样的 div img src some image png img src some image png div class another div div div class another div div div 我想计算该
  • 列表元素之间的 Tab WPF

    我有一个列表框 其中每个项目都使用文本框表示 问题是我希望能够在移动到 xaml 窗口中的下一个元素之前在列表框中的所有项目之间进行切换 当前 和正常的 WPF 行为 是 当我按 Tab 键进入列表框时 第一个元素会突出显示 如果我再次按
  • Android Fitness API 未从可穿戴传感器读取数据

    我一直在阅读有关 Google Fit API 的内容 特别是传感器 API https developers google com fit android sensors https developers google com fit a
  • 向数据框添加新列的问题 - Spark/scala

    我是 Spark scala 的新手 我正在尝试将一些数据从配置单元表读取到 Spark 数据帧 然后根据某些条件添加一列 这是我的代码 val DF hiveContext sql select from select from test
  • Ant 无法启动,给出主类错误

    我正在运行 Elementary OS 基于 Ubuntu 12 并且在运行 apache ant 时遇到问题 它在重新启动之前就可以正常工作 所以我不确定会发生什么变化 我在 etc environment 中定义了环境变量 如下所示 P
  • 为什么某些手机会出现“此应用程序的配置不正确”错误?

    我已经在 android 6 中构建了我的应用程序 没有任何错误 但是当我在 android 4 4 2 中构建我的应用程序时 我收到此错误 This app has been built with an incorrect configu
  • 有没有办法将 google colab 永久连接到我的 google 硬盘?

    我在这里发现了这个很好的问题 https stackoverflow com questions 48376580 google colab how to read data from my google drive https stack
  • 何时取消订阅

    我有一个关于如何取消订阅可观察的问题 我有两个代码 但我不确定哪一个更好 示例 1 gt 流结束后取消订阅订阅者 Subscriber
  • Rails I18n 翻译范围

    编写完全翻译的应用程序可能会变得乏味 有没有办法为当前上下文设置默认翻译范围 示例 我正在部分内容中写入 deadlines html erb in the 显示 html erb我的行动ProjectsController 现在 因为我想
  • 有什么理由在恐慌之后加分号吗?

    之间有区别吗panic blah and panic blah As I understand things semicolons differentiate between statements and expressions1 http
  • WCF - 防止未经授权的客户端

    我有一个 WCF 服务 我只希望我的应用程序能够访问该服务 我的应用程序由使用 JQuery 的传统 Web 界面和 Silverlight 界面组成 这些界面都不需要用户登录 有没有办法告诉 WCF 服务仅允许来自我的域的客户端 如果是这
  • Rails_admin 和 pundit:#

    I m on rails 5 and I m trying to implement authorizations with pundit for my rails admin panel So I included pundit in m
  • 代理递归函数

    想象一个简单的递归函数 我们试图包装它以检测输入和输出 A simple recursive function const count n gt n 1 count n 1 Wrap a function in a proxy to ins