| 11 Dec 2025 |
helle (just a stray cat girl) | welcome to me having some UX and teaching background :3 sorry about that | 21:19:55 |
Charles | i for identifier but i don't care, feel free to pick something else like v for variable | 21:20:08 |
Rutile (Commentator2.0) feel free to ping | non-arbitrary = [a-zA-Z][\w-]*(?<=-) | 21:20:09 |
helle (just a stray cat girl) | s"" may actually work very welll, for string literal | 21:20:38 |
Rutile (Commentator2.0) feel free to ping | also, what exactly is the difference between a variable and an identifier, especilaly in the context of nix? | 21:20:39 |
helle (just a stray cat girl) | or idk | 21:20:43 |
helle (just a stray cat girl) | but I am just using this to demonstrate cases to worry about with UX and teaching, not so much as an actual thing to work on right now | 21:21:08 |
Charles | my point is that i don't think this is complicated to explain, it's maybe one to three sentences depending on how specific you really want to be i guess | 21:21:17 |
Rutile (Commentator2.0) feel free to ping | * non-arbitrary = [a-zA-Z][\w-]*(?!<=-) | 21:21:21 |
helle (just a stray cat girl) | I agree, but already having to think about that helps shape further choices | 21:21:50 |
Charles | it's not like i wasn't thinking about explainability when i came up with this idea | 21:22:14 |
helle (just a stray cat girl) | like, I've seen some amazing programming concepts that people should learn early on, and omfg when I had to try and teach them to people | 21:22:29 |
Charles | in the context of nix i don't think there really is a difference | 21:22:59 |
Charles | in other languages though function names, class/struct/enum/type names, variable names, etc are all identifiers | 21:23:19 |
helle (just a stray cat girl) | and this can go as simple as "well, Python has like at least 3 string formatting mini languages, of which 2 are relevant to this day" | 21:23:22 |
Rutile (Commentator2.0) feel free to ping | I'd just explain it as "has to be a letter at first, then any amount of word characters (letter or digit) and might include a hyphen; everything else requires wrapping in an ident string.
| 21:23:29 |
helle (just a stray cat girl) | like that one gave us no end of headaches | 21:23:32 |
Charles | variable names are a subset of identifiers | 21:23:53 |
helle (just a stray cat girl) | (we TA'ed at uni extensively and cowrote some courses) | 21:24:08 |
Charles | nix doesn't have functions distinct from variables or types though so in nix's case the sets are equal | 21:24:09 |
rosssmyth | horrifying | 21:25:19 |
Charles | yeah lol i'm very surprised that works | 21:25:42 |
helle (just a stray cat girl) | check the Nix iceberg for more horrors | 21:25:45 |
Charles | i would explain it as XID_Start followed by zero or more XID_Continue because that's what it is, and you don't need to explain what those are because explaining that is unicode's job | 21:27:15 |
Charles | for example https://doc.rust-lang.org/reference/identifiers.html#grammar-IDENTIFIER | 21:27:38 |
Charles | * for example https://doc.rust-lang.org/reference/identifiers.html | 21:27:50 |
Rutile (Commentator2.0) feel free to ping | In reply to @charles:computer.surgery i would explain it as XID_Start followed by zero or more XID_Continue because that's what it is, and you don't need to explain what those are because explaining that is unicode's job Something something consecutive hyphens | 21:28:03 |
helle (just a stray cat girl) | I mean...... for a first year compsci student with the two classes I just mentioned, :P that is the level a lot of people starting out with any new language actually would have roughly, even if they are super skilled in say PHP | 21:28:07 |
Charles | the motivation is to ban those from what i'm calling literal identifiers | 21:28:35 |
Charles | that's the entire point | 21:28:51 |