←back to thread

650 points Stratoscope | 4 comments | | HN request time: 0.653s | source
Show context
psychoslave ◴[] No.43503594[source]
If you are looking for alternative to kebab case to write identifier in programming language which reserve the - (U+002d) as an operator, chances are good you can use · (U+00B7 · MIDDLE DOT), that we use in middot case.

So isMorePleasantToRead, is_more_pleasant_to_read or is·more·pleasant·to·read is up to you.

replies(2): >>43503658 #>>43504170 #
1. thomasjb ◴[] No.43504170[source]
This is intriguing to me, do you know which (programming) languages tolerate this?
replies(2): >>43505478 #>>43508388 #
2. psychoslave ◴[] No.43505478[source]
Python

    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.

replies(1): >>43506903 #
3. thomasjb ◴[] No.43506903[source]
Thank 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
4. steveklabnik ◴[] No.43508388[source]
The 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/

MIDDLE DOT is Other_ID_Continue

I know less about the other languages but it wouldn't surprise me if they did similar things.