Jakie inne języki programowania oprócz Pythona i poprzednika są dostępne przy użyciu wcięć do definiowania bloków kodu? [Zamknięte]

12

Python dość dobrze wykorzystuje wcięcia do syntaktycznego definiowania bloków kodu. (Zobacz Instrukcje złożone w Skorowidzu języka Python). Po latach używania Pythona nadal jestem zaintrygowany i bardzo lubię tę funkcję składni.

Zastanawiam się jednak: oprócz Pythona i jego języka ABC „poprzednika” (*), jakie inne języki programowania są dostępne przy użyciu wcięć do definicji bloków kodu ? Bloki kodu oznaczają tutaj „wiele instrukcji, które w pewien sposób są traktowane jako jeden element”.

Szczególnie interesują mnie praktyczne języki programowania, ale warto też wspomnieć o językach ezoterycznych .


(*): „ Poprzednik ” to mój wybór domyślnej znajomości tutaj lepszego. Guido van Rossum, twórca Pythona, opisał relację między Pythonem a ABC w odniesieniu do wcięć w takim wywiadzie : „ Wybór wcięcia do grupowania nie był nowatorską koncepcją w Pythonie; odziedziczyłem to po ABC ”.

halloleo
źródło
15
Nie sądzę, „proszę dać mi listę języków programowania z funkcją X” to pytanie z zakresu informatyki.
David Richerby,
2
Dlaczego istnieje sam język białych znaków , który wymaga właściwego wcięcia dla swojej podstawowej metody wyrażania.
penguin359
1
Warto wspomnieć o długiej formie YAML, mimo że nie jest to język programowania w ścisłym tego słowa znaczeniu, ponieważ jest to prawdopodobnie jeden z najbardziej prawdopodobnych języków z tą funkcją dla osób, które mogą spotkać się po Pythonie.
Austin Hemmelgarn
1
@ penguin359 Myślałem też o Whitespace. To nie jest odpowiedź na pytanie, ponieważ wcięcia nie są używane do definiowania bloków; ale z pewnością jest to język, w którym biała przestrzeń ma największe znaczenie ogólne.
Peter - Przywróć Monikę
1
@DavidRicherby Grupowanie według atrybutów (tj. Kategoryzacja) jest zdecydowanie częścią nauki: np. Interesujące pytanie dotyczące biologii StackExchange mogłoby brzmieć: „ Jakie inne zwierzęta chodzą na dwóch nogach? ” Dlatego uważam powyższe pytanie za bardzo odpowiednie dla Computer Science StackExchange .
halloleo

Odpowiedzi:

23

Wikipedia ma obszerną listę języków, które stosują zasadę off-side 1 :

  • ABC
  • Gwizd
  • BuddyScript
  • Kobra
  • CoffeeScript
  • Skupiać
  • Curry
  • Eliksir ( , do:bloki)
  • Wiąz
  • F # (jeśli #light "off"nie jest określony)
  • dżin
  • Haskell (tylko where, let, do, lub case ... ofklauzule kiedy szelki są pomijane)
  • Poinformuj 7
  • ISWIM, abstrakcyjny język, który wprowadził regułę
  • LiveScript
  • Miranda
  • Nemerle
  • Nim
  • occam
  • PROMAL
  • Pyton
  • Schemat, przy użyciu np. SRFI 119
  • Obracać
  • XL

1: Nigdy wcześniej nie słyszałem tego terminu.

Bergi
źródło
2
Zasada off-side jest ekscytującym odkryciem!
halloleo
3
Nie wiem, czy jest to język, który rozumiesz ty lub wikipedia, ale pliki Makefile również używają wcięć.
TheWildHealer
@TheWildHealer Artykuł na Wikipedii zawiera także sekcję z językami nieprogramowymi (w tym takie jak Make, YAML, RST). Nie zacytowałem tego, ponieważ OP zapytał o języki programowania.
Bergi,
Masz rację, następnym razem na pewno otworzę oczy, dzięki.
TheWildHealer
10

Są to: Elm , Haskell , jego poprzednik Miranda i jej poprzednik ISWIM , YAML gdzie są kluczowe dla składni i zakładek przestrzenie są zakazane, Ockham , Kawa skrypt i Cokescript oba kompilatory języka do języka z JavaScript jako cel i ezoterycznych spacje .

Istnieje również Agda - interaktywny przysłowie twierdzeń, które prawdopodobnie nie jest tym, co miałeś na myśli, ale jego leksykon jest bardzo wrażliwy na białe spacje.
Makefile , który zbiera cele z zamiarem opartym na tabulatorach.

Zło
źródło
1
Również Miranda, język, na którym bazował Haskell.
kne
1
Agda ma bardzo podobną do Haskella składnię i jest wrażliwa zarówno na wcięcia, jak i spacje: (x-y)nie jest (x - y)), nawet jeśli może nie być wystarczająco „praktyczna” dla OP.
chi
1
Ponadto CoffeeScript i mało znany CokeScript
Bergi
5
Jeśli YAML się liczy, to przypuszczam, że Makefile również musi
Izkata,
1
Istnieje również PureScript .
duplode
4

Dopasuj do swojego opisu, choć prawdopodobnie nie jest to dokładnie to, co masz na myśli, z ograniczoną składnią i mocą.

To haniebnie wskazuje jego bloki kodu ( receptur ) o określonej postaci spacji: jeden znak tabulatora. Dostępne są alternatywne sposoby (np. GNU Make obsługuje przy użyciu alternatywnego znaku ), ale rzadko stosowane w praktyce.

Innym przykładem unoszenia się na krawędzi są podręczniki Ansible . Są one określone w YAML , która jest silnie zależna od wcięcia. YAML nie jest językiem programowania, ale podręczniki Ansible można uznać za programy specyficzne dla domeny.

reinierpost
źródło