diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2008-08-14T12·53+0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2008-08-14T12·53+0000 |
commit | 1b962fc7206bf3134b2a2097d3db0ee6d2863c47 (patch) | |
tree | 9e259b7df5f0fa3ca748fa9b9035f2dd35b1a44d /tests/lang/eval-okay-patterns.nix | |
parent | e8188384129bda7c8cdd5e17023ab05047551e6e (diff) |
* @-patterns as in Haskell. For instance, in a function definition
f = args @ {x, y, z}: ...; `args' refers to the argument as a whole, which is further pattern-matched against the attribute set pattern {x, y, z}.
Diffstat (limited to 'tests/lang/eval-okay-patterns.nix')
-rw-r--r-- | tests/lang/eval-okay-patterns.nix | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/tests/lang/eval-okay-patterns.nix b/tests/lang/eval-okay-patterns.nix new file mode 100644 index 000000000000..bcb9f3842e47 --- /dev/null +++ b/tests/lang/eval-okay-patterns.nix @@ -0,0 +1,16 @@ +let + + f = args@{x, y, z}: x + args.y + z; + + g = {x, y, z}@args: f args; + + h = {x ? "d", y ? x, z ? args.x}@args: x + y + z; + + i = args@args2: args.x + args2.y; + +in + f {x = "a"; y = "b"; z = "c";} + + g {x = "x"; y = "y"; z = "z";} + + h {x = "D";} + + h {x = "D"; y = "E"; z = "F";} + + i {x = "g"; y = "h";} |