Welche anderen Programmiersprachen außer Python und dem Vorgänger verwenden Einrückungen, um Codeblöcke zu definieren? [geschlossen]

12

Python verwendet bekanntermaßen Einrückungen, um Codeblöcke syntaktisch zu definieren. (Siehe Zusammengesetzte Anweisungen in der Python-Sprachreferenz.) Nach Jahren mit Python bin ich immer noch von dieser Syntax-Funktion fasziniert und sehr angetan.

Aber ich frage mich: Abgesehen von Python und seiner "Vorgängersprache" (*) ABC, welche anderen Programmiersprachen verwenden Einrückungen zur Definition von Codeblöcken ? Codeblöcke bedeuten hier "mehrere Anweisungen, die auf irgendeine Weise als eine Komponente behandelt werden".

Ich interessiere mich besonders für praktische Programmiersprachen, aber vielleicht sind auch esoterische Sprachen erwähnenswert.


(*): " Vorgänger " ist meine Wortwahl, da ich hier kein besseres kenne. Guido van Rossum, der Schöpfer von Python, beschrieb die Beziehung zwischen Python und ABC hinsichtlich der Einrückung in einem Interview wie folgt: " Die Wahl der Einrückung für die Gruppierung war in Python kein neuartiges Konzept. Ich habe dies von ABC geerbt. "

halloleo
quelle
15
Ich denke nicht, dass "Bitte gib mir eine Liste von Programmiersprachen mit Feature X" eine Informatikfrage ist.
David Richerby
2
Es gibt die Whitespace- Sprache selbst, die eine korrekte Einrückung für ihre Kernausdrucksmethode erfordert.
Pinguin359
1
Langformiges YAML ist wahrscheinlich erwähnenswert, auch wenn es keine Programmiersprache im engeren Sinne ist, da es wahrscheinlich eine der nächsten Sprachen ist, bei denen diese Funktion für jemanden nach Python am wahrscheinlichsten ist.
Austin Hemmelgarn
1
@ penguin359 Ich habe auch an Whitespace gedacht. Dies ist keine Antwort auf die Frage, da Einrückungen nicht zum Definieren von Blöcken verwendet werden. Aber es ist sicherlich die Sprache, in der der weiße Raum insgesamt am wichtigsten ist.
Peter - Setzen Sie Monica
1
@DavidRicherby Die Gruppierung nach Attributen (dh Kategorisierung) ist definitiv ein Teil der Wissenschaft: Eine interessante Frage für einen Biology StackExchange könnte beispielsweise sein: " Welche anderen Tiere laufen auf zwei Beinen? " Daher halte ich die obige Frage für den Computer Science StackExchange für sehr angemessen .
halloleo

Antworten:

23

Wikipedia hat eine umfangreiche Liste von Sprachen, die die Off-Side-Regel 1 verwenden :

  • ABC
  • Boo
  • BuddyScript
  • Kobra
  • CoffeeScript
  • Konvergieren
  • Curry
  • Elixier ( , do:Blöcke)
  • Ulme
  • F # (falls #light "off"nicht angegeben)
  • Genie
  • Haskell (nur für where, let, do, oder case ... ofKlauseln , wenn Klammern weggelassen)
  • 7 informieren
  • ISWIM, die abstrakte Sprache, die die Regel eingeführt hat
  • LiveScript
  • Miranda
  • Nemerle
  • Nim
  • Occam
  • PROMAL
  • Python
  • Schema, wenn zB SRFI 119 verwendet wird
  • Rotieren
  • XL

1: Ich habe diesen Begriff noch nie zuvor gehört.

Bergi
quelle
2
Die Abseitsregel ist ein aufregender Fund!
halloleo
3
Ich weiß nicht, ob es sich um eine Sprache handelt, wie Sie oder Wikipedia sie verstehen, aber Makefiles verwenden auch Einrückungen.
TheWildHealer
@TheWildHealer Der Wikipedia-Artikel hat auch einen Abschnitt mit Nicht-Programmiersprachen (einschließlich Sachen wie Make, YAML, RST). Ich habe das nicht zitiert, weil OP nach Programmiersprachen gefragt hat.
Bergi
Sie haben recht, nächstes Mal werde ich sicher meine Augen öffnen, danke.
TheWildHealer
10

Es gibt: Elm , Haskell , sein Vorgänger Miranda und sein Vorgänger ISWIM , YAML , wo Räume sind von entscheidender Bedeutung für die Syntax und Tabs sind verboten, OCCAM , Kaffee Skript und Cokescript beide Sprache zu Sprache Compiler mit JavaScript als Ziel und esoterische Whitespaces .

Es gibt auch Agda - einen interaktiven Theorembeweiser, den Sie wahrscheinlich nicht im Sinn hatten, dessen Lexer jedoch sehr empfindlich auf Leerzeichen reagiert.
Makefile , das Ziele mit tab-basierten Absichten sammelt.

Böse
quelle
1
Auch Miranda, die Sprache, auf der Haskell basierte.
Knie
1
Agda hat eine sehr Haskell-ähnliche Syntax und ist sowohl empfindlich auf Vertiefung und Räume: (x-y)nicht (x - y)) , auch wenn es nicht „praktisch“ genug für die OP sein könnte.
Chi
1
Auch CoffeeScript und das kaum bekannte CokeScript
Bergi
5
Wenn YAML zählt, dann müssen wohl auch Makefiles
Izkata
1
Es gibt auch PureScript .
Duplode
4

Machen paßt Ihre Beschreibung, obwohl es wahrscheinlich nicht ganz das , was Sie im Kopf haben, mit seiner begrenzten Syntax und Macht.

Es zeigt infamously seine Codeblöcke an ( Rezepte ) mit einer bestimmten Form von Leerzeichen: ein Tabulatorzeichen. Alternative Möglichkeiten stehen zur Verfügung (z. B. GNU Make unterstützt die Verwendung eines alternativen Zeichens ), werden jedoch in der Praxis selten verwendet.

Ein weiteres Beispiel, das am Rande schwebt, sind Ansible-Playbooks . Sie werden in YAML angegeben , was stark einrückungsabhängig ist. YAML ist keine Programmiersprache, aber Ansible-Playbooks können als domänenspezifische Programme betrachtet werden.

reinierpost
quelle