| 15 Oct 2025 |
raitobezarius | i'm just saying you can always inline your example into this | 01:24:38 |
Charles | to be clear the mistake is referring to source instead of source' in the body of input | 01:24:58 |
raitobezarius | ah i see | 01:25:16 |
Charles | if source weren't nameable in the context of input then it's not possible to make this mistake | 01:25:37 |
raitobezarius | but why would it be source' | 01:25:38 |
raitobezarius | and not source ? | 01:25:40 |
raitobezarius | if it's source, shadowing takes over | 01:25:46 |
Charles | that just sweeps the problem under the rug rather than actually preventing it | 01:26:10 |
raitobezarius | feels like that restricting the scope to prevent this mistake goes quite far into curbing the possibilities you have with the nixlang for a user | 01:26:29 |
raitobezarius | is it worth the tradeoff? | 01:26:39 |
Charles | maybe instead of source' they call it s to make naming it shorter and then forget they did that | 01:26:49 |
raitobezarius | shouldn't be this problem fixed by linting? | 01:27:31 |
raitobezarius | define a convention that no let binding named source should appear | 01:27:40 |
raitobezarius | we could have a weird lang construct where we would have input = source': {{ foo = source.foo + 1; }} | 01:28:21 |
Charles | does it? scope restriction would be optional; seems like it gives you strictly more control over what your code can/can't do | 01:28:22 |
raitobezarius | where {{ means no inheritance | 01:28:25 |
raitobezarius | but that's nix2 realm | 01:28:37 |
raitobezarius | so I defer to nix2 expert, piegames | 01:28:42 |
raitobezarius | as far as I'm concerned, I feel the builtin path for this seems unlikely | 01:29:19 |
Charles | i agree | 01:29:33 |
raitobezarius | In the current constraints of Nix1, linting is the best available option perhaps | 01:29:40 |
raitobezarius | (or scopedImport as you said but separate file) | 01:29:49 |
Charles | (which would be the case that fails eval because source is not nameable here) | 01:30:17 |
Charles | i think you transposed these two things but yeah | 01:30:46 |
raitobezarius | sorry ^^, 3am | 01:30:57 |
Charles | np lol | 01:31:05 |
piegames | Nyaaaaawn | 05:46:49 |
| * piegames backlogs | 05:46:54 |
piegames | Whatever you do, it needs to fail at parse time nit run time | 05:52:44 |
piegames | I think a specially scoped closure à la Rust moving semantics would be possible in theory | 05:53:08 |