gpt4 book ai didi

javascript - Ramda 中简单的 Point-free 函数

转载 作者:行者123 更新时间:2023-11-30 06:13:32 25 4
gpt4 key购买 nike

我仍在学习 Ramda,经常无法将看似简单的 lamda 函数转换为无点纯 Ramda 函数。这是一个简单的例子:

export const consoleTap = arg =>
R.compose(
R.tap,
R.curryN(2, console[arg])
);

export const errorTap = consoleTap("error");
export const logTap = consoleTap("log");

// example usage
R.map(logTap("Value"))([1, 2]) // Results in printing "Value 1" "Value 2"

这些函数运行良好,我什至为它们编写了测试。我只是觉得 consoleTap 可以无意义地编写,只是有些东西我没有正确地看到或理解。函数可以重写吗?

最佳答案

我想不出一个看起来不太复杂的无积分版本。我觉得你的已经很不错了。

我唯一的建议是将事情分开:将日志记录与 tap 分开。您可以自己重用“带前缀”的日志记录版本:

const logWith = (method, prefix) => curryN(2, console[method])(prefix);
const log = logWith('log', 'INFO: ');
const error = logWith('error', 'ERR: ');
log(10); // INFO: 10
error(10); // ERR: 10

并使用tap:

const logTap = tap(logWith('error', 'ERR: '));
logTap(10);
// ERR: 10
// => 10

关于javascript - Ramda 中简单的 Point-free 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57444509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com