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 { ... } с многоточием. Но я не знаю, поддерживает ли это язык.


person Max    schedule 18.02.2020    source источник


Ответы (1)


Это должно работать:

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

Вы можете прочитать больше об этом здесь:

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

person David Grayson    schedule 19.02.2020