diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2004-10-25 16:54:56 +0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2004-10-25 16:54:56 +0000 |
commit | 37d7abd69402f0e7a78d4d2f2d78996409a8563a (patch) | |
tree | bf844e4486b0e055921583c4b7c2d3d843b34485 /src/libexpr/lexer.l | |
parent | f4d44a002688262d33093494a7fea1bb11b97ac9 (diff) |
* New language feature: with expressions.
The expression `with E1; E2' evaluates to E2 with all bindings in
the attribute set E1 substituted. E.g.,
with {x = 123;}; x
evaluates to 123. That is, the attribute set E1 is in scope in E2.
This is particularly useful when importing files containing lots
definitions. E.g., instead of
let {
inherit (import ./foo.nix) a b c d e f;
body = ... a ... f ...;
}
we can now say
with import ./foo.nix;
... a ... f ...
I.e., we don't have to say what variables should be brought into scope.
Diffstat (limited to 'src/libexpr/lexer.l')
-rw-r--r-- | src/libexpr/lexer.l | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/libexpr/lexer.l b/src/libexpr/lexer.l index 9637fd304..78d08d072 100644 --- a/src/libexpr/lexer.l +++ b/src/libexpr/lexer.l @@ -48,6 +48,7 @@ if { return IF; } then { return THEN; } else { return ELSE; } assert { return ASSERT; } +with { return WITH; } let { return LET; } rec { return REC; } inherit { return INHERIT; } |