4 ms·
This is intriguing to me, do you know which (programming) languages tolerate this?
by thomasjb 2y ago
This is intriguing to me, do you know which (programming) languages tolerate this?
- psychoslave 2y agoPython python3 -c "some·identifier = 0; print(some·identifier)" C echo -e '#include <stdio.h>\nint main() { int some·identifier = 0; printf("%d", some·identifier); return 0; }' | gcc -x c -o temp - && ./temp C++ echo '#include <iostream>\nint main() { int some·identifier = 0; std::cout << some·identifier; return 0; }' | g++ -x c++ -o temp - && ./temp Ruby ruby -e 'some·identifier = 0; puts some·identifier' Javascript node -e 'let some·identifier = 0; console.log(some·identifier);' Rust echo 'fn main() { let some·identifier = 0; println!("{}", some·identifier); }' > temp.rs && rustc temp.rs && ./temp Go throw an invalid character U+00B7 '·' in identifier Java throw error: illegal character: '\u00b7' C# is really annoyed with it apparently: echo 'using System; class Program { static void Main() { int some·identifier = 0; Console.WriteLine(some·identifier); } }' > Program.cs && mcs Program.cs && mono Program.exe Program.cs(1,60): error CS1056: Unexpected character `·' Program.cs(1,60): error CS1525: Unexpected symbol `identifier', expecting `,', `;', or `=' Program.cs(1,99): error CS1056: Unexpected character `·' Program.cs(1,99): error CS1525: Unexpected symbol `identifier' That’s it for the top in TIOB index I tested in the frame of this message.
- thomasjb 2y agoThank you very much for testing it! I'm plugging away on Advent of Code 2015 in C, I'll give this a go to see if I like it
- steveklabnik 2y agoThe reason this works in Rust is that Rust follows Unicode's categorization of which code points are useful as identifiers: https://www.unicode.org/reports/tr31/ https://www.unicode.org/reports/tr31/ MIDDLE DOT is Other_ID_Continue I know less about the other languages but it wouldn't surprise me if they did similar things.