|
|
|
|
|
by chriswarbo
442 days ago
|
|
I actually prefer `with`, since it fits better with the language: - It uses `;` in the same way as `assert`, whereas `let` uses a whole other keyword `in`. - It uses attrsets as reified/first-class environments, unlike `let`, which lets us do `with foo; ...`. - Since it uses attrsets, we can use their existing functionality, like `rec` and `inherit`; rather than duplicating it. I've been using Nix for over a decade (it's even on my phone), and I've never once written a `let`. (I agree that the shadowing behaviour is annoying, and we're stuck with it for back-compat; but that's only an issue for function arguments and let, and I don't use the latter) |
|
> Since it uses attrsets, we can use their existing functionality, like `rec` and `inherit`; rather than duplicating it.
`let` supports `inherit`, and is always `rec`. Or is that your point, that it is needlessly duplicated functionality?