Dlaczego zakres rozszerzania nawiasów wykorzystuje dwie kropki zamiast trzech (elipsa)?


10

W końcu zrozumiałem / odkryłem, dlaczego nigdy nie byłem w stanie prawidłowo używać zakresu rozszerzenia nawiasów klamrowych bash(a także zsh): składnia jest {1..10}zamiast tego, co uważałem za elipsę , tj {1...10}.

Czy mogę wiedzieć, dlaczego wybrano dwie kropki zamiast trzech kropek? Wykorzystanie elipsy w programowaniu komputerowym jest powszechne i dobrze rozumiane, jak wskazuje link (Wikipedia), dlatego wzbudziło to moją ciekawość.


3
Najwyraźniej pochodzi z Perl ...
jasonwryan

3
Zastosowanie n1..n2w programowaniu do oznaczania zakresu od n1 do n2 znacznie wyprzedza Perl. Patrz instrukcja użytkownika Pascal z 1970 r., Sekcja 6.1.2 na stronie 17 .
Adaephon,

1
Hej komentatorzy, możesz zamienić swoje komentarze w odpowiedzi ...? :)
hjk,

Mam niejasne wspomnienie, że niektóre języki używają teraz ..vs. kontra ...do włączenia właściwego punktu końcowego lub nie, ale mogę się mylić. (Ruby? Czy to był Ruby?)
Ulrich Schwarz

3
@slm Będę musiał się nie zgodzić z tego powodu. Historyczne pytania o to, jak coś powstało, nie są tak naprawdę oparte na opiniach. Komentarze już wskazywały, że odpowiedź jest tylko kwestią historyczną i pomimo „dlaczego” w tytule można na to dość solidnie odpowiedzieć.
Caleb,

Odpowiedzi:


7

(zamiast tego publikuje jako wiki społeczności, dzięki wkładowi w komentarzach)

W książce From Bash to Z Shell (Rozdział 8, Strona 186, „ Generowanie liczb za pomocą nawiasów klamrowych ”) wspomniano, że ta składnia została zapożyczona z Perla .

Ponadto sugeruje się również, że Pascal miał ..notację zasięgu już w 1970 r. (Moje podkreślenie) („ Pascal Language Programming ”, Rozdział 6.1.2, strona 17 w dołączonym pliku PDF).

Podsumowując, nawet link Wikipedii z pytania podał kilka przykładów ..użycia. Założenie , że elipsa jest ściśle zdefiniowany jako sekwencja trzech kropek, jak to jest jako znak interpunkcyjny , nie trzyma tutaj prawdziwe.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.