Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: Ia9c1e9b0a8cd9c6d834f153609baa5426a6a6964
61 lines
828 B
Nix
61 lines
828 B
Nix
# Test lambda patterns
|
|
let
|
|
# Basic destructuring
|
|
f1 = {
|
|
a,
|
|
b,
|
|
}:
|
|
a + b;
|
|
|
|
# With default values
|
|
f2 = {
|
|
a,
|
|
b ? 10,
|
|
}:
|
|
a + b;
|
|
|
|
# With ellipsis (extra fields allowed)
|
|
f3 = {a, ...}: a * 2;
|
|
|
|
# Named pattern with ellipsis to allow extra fields
|
|
f4 = arg @ {
|
|
a,
|
|
b,
|
|
...
|
|
}:
|
|
a + b + arg.c;
|
|
|
|
# Simple lambda (not a pattern)
|
|
f5 = x: x + 1;
|
|
in {
|
|
# Test basic destructuring
|
|
test1 = f1 {
|
|
a = 3;
|
|
b = 4;
|
|
};
|
|
|
|
# Test with defaults (provide both)
|
|
test2a = f2 {
|
|
a = 5;
|
|
b = 6;
|
|
};
|
|
|
|
# Test with defaults (use default for b)
|
|
test2b = f2 {a = 5;};
|
|
|
|
# Test ellipsis (extra field ignored)
|
|
test3 = f3 {
|
|
a = 7;
|
|
extra = 999;
|
|
};
|
|
|
|
# Test named pattern
|
|
test4 = f4 {
|
|
a = 1;
|
|
b = 2;
|
|
c = 3;
|
|
};
|
|
|
|
# Test simple lambda
|
|
test5 = f5 10;
|
|
}
|