问题标签 [ramda.js]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 以无点风格在 Ramda 中编写无参数函数?
考虑下面的工作代码:
randN
是一个函数,它接受一个数字并返回一个 RNG,当被调用时,它将返回一个范围为 [0, N-1] 的随机 int。所以它是特定 RNG 的工厂。
我一直在使用ramda.js并学习函数式编程理论,我的问题是:是否可以randN
使用 ramda 以无点风格重写?
例如,我可以写:
这将满足“无点风格”的要求,但无法表现出与以下相同的方式randN
:调用badAttempt(10)
只返回一个介于 1 和 10 之间的随机数,而不是在调用时生成一个介于 1 和 10 之间的随机数的函数。
我还没有找到使我能够以无点样式进行重写的 ramda 函数组合。我不知道这是否只是我的失败,还是 using 的特殊之处random
,它破坏了引用透明度,因此可能与无点样式不兼容。
更新
在与 Denys 讨论后,我自己对解决方案的细微改动:
javascript - 使用 ramda.js 中的嵌套字段进行排序
在sortBy的文档中,它说我们可以使用 R.prop 按对象的字段对对象进行排序。但是如果我必须按嵌套字段排序,它就不起作用。例如 R.prop('id.number') 不起作用。
工作正常。但是如果我有一个嵌套结构
给我一个空列表。我想有一种我无法弄清楚的使用 R.prop 的正确方法。
functional-programming - 使用 Ramda 进行函数式编程:你能 curry 一个接受无限数量参数的函数吗
假设我有 3 个数组
我想创建一个咖喱函数,在其中设置第一个参数,指示我想在作为参数传递的数组中添加哪个单元格......理想情况下,我希望该函数能够获取无限数量的数组......
例如:
mycurriedfunction(1)
这意味着我想访问我传入的数组的单元格 1 处的值并将它们加在一起。
因此这样做:
mycurriedfunction(1)(first)
将返回 1
mycurriedfunction(1)(first)(second)
将返回 2
mycurriedfunction(2)(first)(second)(third)
将返回 6
这甚至可能吗?
如果不是,那么有哪些替代方案可以实现相似甚至相同的结果?
javascript - 函数式编程:属性总和
我正在尝试使用 Ramda在 JS 中实现一个函数,该函数采用对象列表并返回特定属性的总和。例如
原则上,我需要这样的函数:
在函数式编程中实现这样的东西的最优雅的方法是什么?R.map(R.props)
由于明显的原因不起作用。我尝试使用R.compose
or的一些组合,R.pipe
但我没有运气
javascript - 如何在 Ramda.js / lodash 中使这段代码更具“函数式编程”风格
我有这段代码:
我觉得有一种方法可以改进这段代码,让它只有一行。我尝试了许多不同的方法,但我是新手ramda.js
,我可能会缺少一些功能,这会使这变得更容易和更简单。
javascript - 如果不匹配,则 Ramda 过滤器
我想过滤所有不符合条件的元素。我能够让它工作:
但我觉得必须有一个更简单的方法:)
javascript - 在 ramda.js 中合并两个属性
我想知道是否有更好的方法来做到这一点:
所以基本上,我试图通过将两个属性组合在一起来获得全名。这行得通,但我想知道是否有更好(更短)的方法来做到这一点Ramda
?我浏览了文档,但是有些功能我还不太了解其用法。所以这就是我在这里问的原因.. :)
小提琴: https ://jsbin.com/jidiwejatu/edit?js,console
- - - - - - - - - - 编辑 - - - - - - - - -
这是一个相当简单的例子,但是如果我必须合并来自不同路径的属性,我认为这会变得更加复杂,因为我必须使用它R.path
来获取每个属性。我对吗?
javascript - 如何访问 Ramda.map 中的迭代索引
我曾经写过类似的东西
与lodash。通常我不需要index
,但有时它很有用。
我现在正在迁移到 Ramda:
index
是undefined
。当然,我可以index
在上层范围内创建变量并每次在map
正文中递增它,但从 Ramda 所代表的 FP 的角度来看,这有点错误。那么是否有任何构建方式来获取迭代索引?
ramda.js - 累加器在 R.pipe 中对 R.reduce 的 2 次连续调用之间未重置
考虑到这段代码,使用 Ramda 0.21.0:
为什么第二次调用foo
display{ a: 2, b: 3, c: 4, d: 5 }
而不是{ c: 4, d: 5 }
?
是否正在进行某种记忆?我希望每次应用 foo 时acc
都会重置初始值。{}