- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我现在正在学习 JS 库 Ramda。似乎有一种我无法正确解决的模式。例如我有这个代码。
const filterPayments = filter => payments =>
r.filter(
r.allPass([
typePred(filter),
amountPred(filter),
accountPred(filter),
currencyPred(filter)
]),
payments
);
现在看来,我距离使其自由化已经不远了。我似乎找不到正确的方法。
此外,我在制作像这样的完全功能性且无点的逻辑函数时遇到了麻烦:
const amountPred = filter => p =>
r.and(p.betrag >= filter.amount.min, p.betrag <= filter.amount.max);
也许有人可以指出我正确的方向或提供一些指导?
最佳答案
我提供的指导是坚持你目前拥有的:)
我可以向您展示一个示例,说明您所拥有的内容的无点翻译可能是什么样子,尽管生成的代码读起来非常糟糕,而且实际上只适合进行心理体操。
首先,付款
出现在函数表达式两侧的最终位置,因此我们可以简单地将其删除。
const filterPayments = filter =>
R.filter(
R.allPass([
typePred(filter),
amountPred(filter),
accountPred(filter),
currencyPred(filter)
]));
接下来我们可以处理传递给R.allPass
的函数列表
R.allPass(R.map(p => p(filter), [typePred, amountPred, accountPred, currencyPred]))
现在我们可以通过翻转 R.map
将其推向末尾来开始删除 filter
参数。
R.allPass(R.flip(R.map)([typePred, amountPred, accountPred, currencyPred])(p => p(filter))
现在让我们创建filter
并将参数传递给p => p(filter)
,而不是关闭它,使其:
R.allPass(R.flip(R.map)
([typePred, amountPred, accountPred, currencyPred])
(R.applyTo(filter)))
现在开始形成像 h(g(f(a)))
这样的形状,我们可以使用 R.pipe
将其转换为无点,R.compose
、R.o
等
const filterPayments = R.compose(
R.filter,
R.allPass,
R.flip(R.map)([typePred, amountPred__, accountPred, currencyPred]),
R.unary(R.applyTo) // R.unary is needed here to tell Ramda only to expect the first argument in this composition
)
这为我们提供了一个现在应该相当于无积分形式的 filterPayments
的函数。
您的 amountPred
示例变得更加复杂,我想您之后会同意您已经拥有的是两者之间更好的选择。
同样,我们首先尝试将参数插入表达式每一侧的末尾:
filter => p =>
both(
x => x >= filter.amount.min,
x => x <= filter.amount.max
)(p.betrag)
然后我们可以删除p
:
filter => R.o(
both(
x => x >= filter.amount.min,
x => x <= filter.amount.max
),
prop('betrag'))
传递给both
的函数也可以交换:
filter => R.o(
both(
R.flip(R.gte)(filter.amount.min),
R.flip(R.lte)(filter.amount.max)
),
prop('betrag'))
现在要解决filter
问题,我们可以使用R.converge
将相同的参数传递给多个函数,然后将每个函数的结果组合在一起。
filter => R.o(
R.converge(both, [
f => R.flip(R.gte)(R.path(['amount', 'min'], f),
f => R.flip(R.lte)(R.path(['amount', 'max'], f)
])(filter),
prop('betrag'))
现在 f
位于结束位置,因此可以通过组合删除它:
filter => R.o(
R.converge(both, [
R.o(R.flip(R.gte), R.path(['amount', 'min'])),
R.o(R.flip(R.lte), R.path(['amount', 'max']))
])(filter),
prop('betrag'))
将 filter
放到最后会变得非常困惑,涉及翻转组合函数。
filter => R.o(
R.flip(R.o)(R.prop('betrag')),
R.converge(both, [
R.o(R.flip(R.gte), R.path(['amount', 'min'])),
R.o(R.flip(R.lte), R.path(['amount', 'max']))
])
)(filter)
最后...
const amountPred = R.o(
R.flip(R.o)(R.prop('betrag')),
R.converge(both, [
R.o(R.flip(R.gte), R.path(['amount', 'min'])),
R.o(R.flip(R.lte), R.path(['amount', 'max']))
])
)
...将其与您的原件进行比较,我知道我更喜欢阅读哪一个:
const amountPred = filter => p =>
p.betrag >= filter.amount.min && p.betrag <= filter.amount.max
关于javascript - 在 Ramda 中做一些无积分的事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51104942/
请提出一个数据结构来表示内存中的记录列表。每条记录由以下部分组成: 用户名 积分 排名(基于积分)- 可选字段- 可以存储在记录中或可以动态计算 数据结构应该支持高效实现以下操作: Insert(re
我正在使用 integrate 将一些集成到循环中我想出了一个我无法理解的错误,也无法摆脱。这是我可以提取的 MWE: u_min = 0.06911363 u_max = 1.011011 m =
掌上生活17要吃节签到抽腾讯视频爱奇艺会员月卡 5元饭票 积分 打开掌上生活APP,首页全部专区进入找到活动日历往下拉可以看到17要吃节进入活动页面 可以集3个赞兑换星巴克喝,也可以签到抽爱
我遇到了一个有趣但相当烦人的问题。 我正在尝试集成一个从数据集计算出来的函数。 数据可以在这里找到:Link to sample.txt . 我首先将一条线拟合到我的数据中。这可以通过 approxf
当我使用 Three.js 创建一个点时,它看起来像一个正方形。我怎样才能使它看起来圆?我在文档中看到了一些混合因素,但我不太明白如何在我的观点中使用它们,我什至不知道这是否是正确的方法。 最佳答案
我尝试了此处找到的示例代码: https://developers.facebook.com/docs/creditsapi/即使我添加了我的公司地址和付款方式,我仍然会收到此错误: API Erro
我想使用 scipy.integrate.ode 求解器。我只能将可调用函数 f 定义为离散点数组(因为它取决于先前迭代的积分结果)。但是从文档来看,集成商似乎希望可调用函数是一个连续函数。我想需要进
我无法理解 sympy.integrate() 函数的行为。最简单的例子,整合和分化: t = sy.Symbol('t') t1 = sy.Symbol('t1') f = sy.Function(
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
我在 zeroSSL 面板中有一个过期的 SSL 证书,但我无法更新它,因为我生成了 3/3 证书。 1 仍处于事件状态,但其他两个已过期(已为这些相同的域提前生成)。是否有可能以某种方式删除其中一个
我有一个数据结构,例如表达式树或图形。我想添加一些“测量”功能,例如depth和 size . 如何最好地键入这些函数? 我认为以下三个变体的用处大致相同: depth :: Expr -> Int
让 Mathematica 7 或 8 进行积分的最佳方法是什么 NIntegrate[Exp[-x]/Sin[Pi x], {x, 0, 50}] 每个整数都有极点 - 我们需要柯西原理值。这个想法
只是想知道是否有人知道如何查询 Facebook Credits (FBC) API 以获取用户拥有的信用数?我的应用程序有此要求,并且 FBC API 中没有对此进行解释或提及。 谢谢 最佳答案 也
好的,所以这让我难住了超过 3 天,在离解决方案还差一步之后,我要在这里试试运气。 过去,我为一个特定的排序数据集编写了一些代码,它是这样的: n maxobs){FG = 1} else {
在激活通过 MSDN 订阅获得的 Azure 积分时,我使用了工作帐户。 事实证明,由于我没有 Active Directory 管理员权限,因此无法注册应用程序等。这使得它毫无用处。我也不太可能获得
如何使用 Romberg 积分近似计算以下积分, min:1, max:1.6, integral (2x)/((x^2)-4) 还计算 Romberg 表,直到 |R_n-1,n-1 - R_n,n
我正在尝试计算积分 sin(x)/x , x = [0,inf] 我做了以下事情: import math from scipy.integrate import quad t = float("in
所以我的代码有效,只是出于某种原因,我的代码总是运行两个 if 语句(两个 y 方程,无论我为第一个 fprintf 问题输入哪个数字)。此外,t,y 列总是比 t,y2 列长得多(编辑,即如果我输入
我有一个简单的问题。我正在尝试使用 Matlab R2012a 评估 0 阶贝塞尔函数的不正确积分: v = integral(@(x)(besselj(0, x), 0, Inf) 这给了我 v =
我正在与 iPhone Native Game App 一起开发 Facebook Canvas Game 项目,该项目使用 Facebook 积分作为唯一的虚拟货币。 据我们所知,Apple 应用内
我是一名优秀的程序员,十分优秀!