WIP: Add scoped expressions inspired by OCaml #12471
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
TODO: The parsing works but it has the semantics of normal
with
currently.I am currently calling it
scoped dot
, because calling itinnermost with
would maybe make people confuse them with the currentoutermost with
expressionsAlso put up a discussion at https://discourse.nixos.org/t/alternatives-to-with-expression/60272
This solution took inspiration from OCaml: "module access notation" in https://ocaml.org/docs/modules and "local open" in https://ocaml.org/manual/5.3/moduleexamples.html.
Motivation
With expressions are convenient, but confusing (i.e. taking the outermost binding), but the alternative of using
builtins.attrValues { inherit (foo) a b c; }
instead ofwith foo; [a b c]
is cumbersome.This is taking inspiration from OCaml.
Context
Changing the parser is always something to be done with care. I should definitely add more tests, and people should try it out before it gets merged with something suboptimal.
Add 👍 to pull requests you find important.
The Nix maintainer team uses a GitHub project board to schedule and track reviews.