functional-programming - Nix 将可变参数添加到函数中的集合中

标签 functional-programming nix

nix 中可能有这样的事情吗?

f = {x, y, ...}:
{
    x = x + 1;
    y = y + 2;
    ...;
}

对一组参数调用 f 会返回一个集合:

f { x = 1; y = 2; }                   -> { x = 2; y = 4; }
f { x = 1; y = 2; z = 5 }             -> { x = 2; y = 4; z = 5; }
f { x = 1; y = 2; z = 5; s = "str"; } -> { x = 2; y = 4; z = 5; s = "str"; }

说清楚一点。省略号...的集合是可变参数类型,并不意味着日常语言中使用的等等。这里的解决方案是如果可能的话,在省略号上调用 get { ... } 。但我不知道该语言是否支持这个。

最佳答案

这应该有效:

f = args@{x, y, ...}: args // { x = x + 2; y = y + 2; }

您可以在这里阅读更多相关信息:

https://nixos.org/nix/manual/#ss-functions

关于functional-programming - Nix 将可变参数添加到函数中的集合中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60290305/

相关文章:

scala - 获取字符串并使用特定分隔符创建字典的功能方法

java - Function Java 将 arity-2 函数 (F2) 绑定(bind)到选项

nix - 我可以使用不同版本的软件包启动 nix-shell 吗?

unit-testing - 函数式编程中的测试

functional-programming - 为什么 1::2::[] 和 [1;2] 在 OCaml 中的 == 不一样?

scala - FS2 流运行直到 InputStream 末尾

nix - nix 路径类型何时进入 nix 存储,何时不进入?

yarnpkg - 如何在我的 nix shell 中同步 Node 和 Yarn 版本?

python - 最小化使用Nix的 `dockertools.buildImage`构建的docker容器大小

NixOS:在 configuration.nix 中设置默认 channel