Ramda 柯里化:如何将参数应用于多个参数

2023-12-02

我有一种情况需要这样做:

const f = (obj) => assoc('list', createList(obj), obj)

由于我需要第二个和第三个参数的参数,因此禁止我执行以下操作:

const f = assoc('list', somehowGetObj())

我也尝试过这个,但是没有用:

const f = assoc('list', createList(__))
const f = converge(assoc, [createList, identity])

有没有正确的方法可以通过柯里化来做到这一点?


另一种选择是

chain(createList, assoc('list'))

您可以在拉姆达 REPL.

Update

为了进一步解释其工作原理,我将使用与下一个版本的 Ramda 一起使用的变体:

chain(assoc('list'), createList)

显示它如何匹配当前签名:

chain :: Chain m => (a -> m b) -> m a -> m b

Ramda 将函数视为梦幻之地 Monads,因此也作为Chains。因此,为了将上述内容专门化为函数,我们有

chain :: (a -> Function x b) -> Function x a -> Function x -> b

but Function x y可以更简单地写为x -> y,所以上面可以更简单地写为

chain :: (a -> x -> b) -> (x -> a) -> (x -> b)

然后您可以使用这些(专用)类型:

createList :: OriginalData -> YourList                              (x -> a)
assoc :: String -> YourList -> OriginalData -> EnhancedData
assoc('list') :: YourList -> OriginalData -> EnhancedData           (a -> x -> b)

因此

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

Ramda 柯里化:如何将参数应用于多个参数 的相关文章

  • React-native:将场景绑定到导航栏

    我正在整理这个提问 回答应用程序 并遇到了这个障碍 我想从导航栏触发场景中的功能 与登录应用程序类似 我在导航栏中有一个用于提交答案的按钮 RightButton route navigator index navState if rout
  • 如果对象包含在另一个数组中,则从数组中删除该对象

    我试图从数组中删除一个对象 如果该对象的属性 唯一 包含在另一个数组中 我知道我可以像这样执行嵌套 for 循环 for i 0 i lt array length i for j 0 j lt array2 length j if arr
  • 取消html5浏览器中的单图请求

    我正在动态加载 大 图像以绘制到 html5 画布中 如下所示 var t new Image t onload t src http myurl 但每隔一段时间就会想取消图片请求完全地 我想出的唯一方法是设置src to i e t sr
  • 动态速度计 javascript 或 jquery 插件

    我希望有动态ajax插件在页面上显示速度计 一个想法是我设置一个背景并旋转针 有人知道相关插件吗 这里有一些供您参考 http bernii github com gauge js http bernii github com gauge
  • 如何使用 JavaScript 中的值填充下拉列表?

    我在 Tridion CMS 扩展中的功能区工具栏按钮中添加了一个按钮 单击该按钮后 将显示一个弹出页面 其中包含两个下拉菜单 通过更改第一个下拉控件中的值 我应该填充第二个下拉控件的值 就我而言 我正在使用ASP drop down li
  • Leaflet js虚构地图

    我是 Leaflet 的新手 我想了解如何创建完全交互式的虚构地图 我有一张图像想要转换为传单地图 该图像基本上像图表一样具有许多连接和点 我想首先将该图像转换为地图 能够将鼠标悬停在这些点上 突出显示它们并显示有关它们的信息 并且还可以在
  • 使用 CryptoJS 更改密钥 [重复]

    这个问题在这里已经有答案了 我正在使用 CryptoJS 来加密和解密文本 在这里 我只是获取消息并显示加密和解密消息 我使用DES算法进行加密和解密 这是我的 HTML 文件
  • 如何使用 JavaScript 获取没有 HTML 元素的纯文本?

    我的 HTML 中有 1 按钮和一些文本 如下所示 function get content I don t know how to do in here
  • 通过 node-http-proxy 保留基于 cookie 的会话

    我有一个简单的基于 Express 的 Node js Web 服务器 用于开发 JavaScript 应用程序 我将服务器设置为使用 node http proxy 来代理应用程序向在不同域和端口上运行的 Jetty 服务器发出的 API
  • 如果链接包含特定文本,jQuery 将类添加到 href

    我的网站上的列表中有一些动态填充的链接 这些链接链接到文件 是否可以使用 jQuery 查看文件名是否以 pdf 结尾 并在 href 或类似的链接文本以 mp3 结尾时添加一个类 例如 我的列表中有以下链接 文件1 pdf 歌曲1 mp3
  • Javascript - 将值从下拉框传递到 Google Maps API

    我正在使用 Google 地图 API 为一家出租车公司创建报价表 目前 用户在 2 个文本框中输入出发点和接载点 API 会计算两点之间的距离以及行程费用 我正在尝试添加两个具有设定位置的下拉框 以便用户可以选择这些位置之一或使用文本框输
  • 单击关闭按钮后不显示 Google 一键登录 UI

    我正在尝试按照本指南使新的谷歌一键登录工作 https developers google com identity one tap web https developers google com identity one tap web
  • 当用户单击链接时,如何记录 MixPanel 事件?

    当用户单击某种类型的链接时 我试图在 MixPanel 中记录一个事件 我正在使用 JQuery 不引人注意地完成此操作 据我所知 我需要添加一个回调函数 以便在记录事件后将用户带到 URL 这是我正在使用的代码 不幸的是
  • 如果数字小于 10,则显示前导零 [重复]

    这个问题在这里已经有答案了 可能的重复 JavaScript 相当于 printf string format https stackoverflow com questions 610406 javascript equivalent t
  • JavaScript onresize 事件多次触发

    我在尝试仅在触发 onresize 事件时运行一次函数时遇到一些麻烦 我已经看过这个问题DOM onresize 事件 https stackoverflow com questions 1500312 javascript onresiz
  • 数据表日期范围过滤器

    如何添加日期范围过滤器 like From To 我开始进行常规搜索和分页等工作 但我不知道如何制作日期范围过滤器 我正在使用数据表 1 10 11 版本 My code var oTable function callFilesTable
  • 如何在 Google 地图 V3 中创建编号地图标记?

    我正在制作一张上面有多个标记的地图 这些标记使用自定义图标 但我还想在顶部添加数字 我已经了解了如何使用旧版本的 API 来实现这一点 我怎样才能在V3中做到这一点 注意 当您将鼠标悬停在标记上时 标题 属性会创建一个工具提示 但我希望即使
  • 如何在 javascript 正则表达式中匹配平衡分隔符?

    我原以为这个问题是不可能的 据我所知 Javascript 的正则表达式既没有递归插值 也没有漂亮的 NET 平衡组功能 但问题就在那里 如问题 12 所示正则表达式 alf nu http regex alf nu 匹配平衡对 lt an
  • 需要有关 React Js 的帮助

    我是 React Js 新手 我的代码无法正常工作 请看下面 这是我的脚本文件Main jsx 该文件由 React 编译 输出放置在 dist 文件夹下的 main js 文件中 var react require react react
  • 单击列表时使用 bootstrap Dropdown 防止下拉菜单消失

    我正在使用使用引导下拉菜单 http twitter github com bootstrap javascript html dropdowns生成下拉菜单 我想防止点击菜单时菜单消失 我已经实现了以下代码 但它不起作用 知道如何修复它吗

随机推荐

  • ActiveRecord::StatementInvalid: PG::ReadOnlySqlTransaction: - 即使取消关注后,Heroku 数据库仍然只读

    我想将数据库从一个应用程序复制到 Heroku 中的另一个应用程序 我遇到索引问题 迫使我使用关注者数据库来执行此操作 然后取消关注 我的问题是 现在在创建关注者 取消关注并推广它之后 我在尝试写入它时遇到错误 ActiveRecord S
  • iPhone SDK 推送通知随机失败

    我有一个包含以下内容的 PHP 文件 该文件在开发证书上完美运行 但是当我切换到生产证书时 PHP 错误并给出以下消息 但它只在大约 50 的时间内执行此操作 另外50 有效 有人知道为什么会发生这种情况吗
  • 从 MySQL 检索数据 - 仅登录用户

    我现在正在构建一个新项目并完成了我的登录 注册脚本 到目前为止它正在工作 但现在我需要一个新功能 我不确定我到底应该如何做到这一点 如果用户成功登录 用户将看到的第一页是他的个人资料 在此页面上 我通过以下查询获取数据
  • 验证 AngularJS 中同一文本字段的电子邮件或电话号码

    我正在 AngularJs 中为我的项目制作注册表 用户可以使用他 她的电子邮件 电话进行注册 我需要验证该特定文本框 我对两者都进行了验证 使用不同的文本字段和 ng pattern 但如何在一个文本字段中验证两者呢 我已经更新了我的代码
  • exe文件中的Delphi签名

    type TDelphiSignature record Signature array 0 3 of LongWord Version string end const DelphiSignature array 0 2 of TDelp
  • Bash 多行输出带空格,作为数组变量

    我正在努力处理 Mac OS X 上的 Bash 3 2 上的命令输出 我有一个输出多行字符串的命令 字符串的每一行的值中都有空格 我想将每个值分配给数组变量的一个元素 我有以下脚本 declare a sublist sublist az
  • Anaconda:从 shell 外部调用 Python 解释器时找不到包

    我有两个 Anaconda 环境 基地环境 R 环境 仅包含 R 基础环境是默认环境 不会出现在Anaconda子目录中envs 默认情况下 Base 被激活 特别是在执行以下命令时 当我从 Anaconda 提示符 或我为 Anacond
  • Spark 有状态流作业在长时间正常运行后在 S3 的检查点处挂起

    我最近对我们的 Spark Streaming 应用程序进行了压力测试 压力测试每秒将大约 20 000 条消息摄取到 Kafka 中 消息大小在 200 字节到 1K 之间变化 其中 Spark Streaming 每 4 秒读取一批数据
  • Angular 2:如何设置组件的宿主元素的样式?

    我在 Angular 2 中有一个名为 my comp 的组件
  • 手动添加对实体框架的引用

    我正在开发一个围绕 EF 的项目 我将项目的核心层分为不同的项目 不幸的是 我经常遇到错误 因为我在项目中缺少对 EntityFramework SqlServer dll 的引用 将 dll 文件添加到我的构建文件夹可以解决此问题 但我想
  • Django CBV CreateView - 从 CreateView 重定向到最后一页

    我正在学习 Django 并且在从 CreateView 重定向回来时遇到问题 我想重定向到 BookDetail 页面 其中包含由 CreateView 创建的书籍实例列表 模型 py class BookInstance models
  • 一行写和多行写的区别

    当我在一行上写一些东西并用 分隔时有什么区别 并在两条线上 显然我不明白其中的区别 因为我认为下面的两个函数应该返回相同的结果 def fibi n a b 0 1 for i in range n a b b a b return a p
  • 如何删除特定 mysql 表字段上的唯一键

    我在用户名和电子邮件两个字段中分配了唯一的密钥 我已经执行了这个查询 ALTER TABLE goipmonl users DROP INDEX username DROP INDEX username ON goipmonl users
  • PrimeFaces DataTable 有记录时“未找到记录”

    我将 dataTable 定义为
  • 数据库表越多越好吗?

    最近 我一直在重新思考几个月前所做的数据库设计 主要原因是昨晚我读了vBulletin的数据库模式 发现他们使用了很多很多表 我当前用于模式 例如我的日志表 的 想法 是通过将日志类型与整数进行区分 将所有内容保留在一个表中 id type
  • 子进程重定向的 STDOUT 上的重叠 ReadFileEx 永远不会触发

    我有一个长期运行的基于控制台的应用程序 Sender 它使用非缓冲输出 例如 cout 我问过一个单独的问题关于做到这一点的最佳方法 我的第一次尝试是为子进程创建带有重定向 STDIN 和 STDOUT 的管道 并使用异步 ReadFile
  • 是否可以确保 constexpr 函数在编译时最多调用一次?

    正如标题所问 是否可以确保 constexpr 函数在编译时最多调用一次 如果函数不是 constepxr 这显然是不可能的 我可以编写一个每当我按下空格键时就会调用的函数 因此编译器永远无法在编译时弄清楚这一点 简短回答 没有为什么con
  • 查找裁剪后的相似图像

    2 个图像具有相同的颜色 图案等 一张图像是从另一张图像中裁剪出来的 我发现的算法主要使用位置来比较图像之间的差异 因此它会为裁剪图像产生错误的结果 如何知道这两张图片相似 Thanks 您确实需要提供更多信息 但也许您可以使用互相关算法
  • 打开 NFC 模拟器使用

    我想知道如何正确使用开放式 NFC 模拟器 我已经在以下位置浏览过类似的帖子 Open NFC 模拟器入门 但我的问题是 在遵循上面链接中的所有说明后 没有运气 有人可以给我有关如何正确加载 SDK 插件并启动模拟器的分步说明吗 我正在做一
  • Ramda 柯里化:如何将参数应用于多个参数

    我有一种情况需要这样做 const f obj gt assoc list createList obj obj 由于我需要第二个和第三个参数的参数 因此禁止我执行以下操作 const f assoc list somehowGetObj