Quali altri linguaggi di programmazione, a parte Python e il predecessore, sono in circolazione usando il rientro per definire i blocchi di codice? [chiuso]


12

Python abbastanza notoriamente usa il rientro per definire sintatticamente blocchi di codice. (Vedi le istruzioni composte nel Python Language Reference). Dopo anni di utilizzo di Python sono ancora incuriosito e molto affezionato a questa funzione di sintassi.

Ma mi chiedo: a parte Python e il suo linguaggio "predecessore" (*) ABC quali altri linguaggi di programmazione sono disponibili usando il rientro per la definizione di blocchi di codice ? Blocchi di codice significa qui "più istruzioni che in qualche modo sono trattate come un componente".

Sono particolarmente interessato ai linguaggi di programmazione pratica , ma vale la pena menzionare anche i linguaggi esoterici .


(*): " Predecessore " è la mia scelta della parola in difetto di conoscerne una migliore. Guido van Rossum, il creatore di Python, descrisse il rapporto tra Python e ABC riguardo al rientro in un'intervista come questa: " La scelta del rientro per il raggruppamento non era un nuovo concetto in Python; l'ho ereditato dall'ABC. "


15
Non credo che "per favore dammi un elenco di linguaggi di programmazione con la funzione X" è una domanda di informatica.
David Richerby,

2
Perché, c'è lo stesso linguaggio degli spazi bianchi che richiede il rientro corretto per il suo metodo di espressione principale.
penguin359

1
Probabilmente vale la pena menzionare YAML di lunga durata anche se non è un linguaggio di programmazione nel senso più stretto, poiché è probabilmente uno dei prossimi linguaggi più probabili con questa funzionalità che qualcuno può incontrare dopo Python.
Austin Hemmelgarn,

1
@ penguin359 Ho pensato anche a Whitespace. Non è una risposta alla domanda perché l'indentazione è, afaict, non utilizzata per definire i blocchi; ma è certamente la lingua in cui lo spazio bianco è complessivamente più significativo.
Peter - Ripristina Monica

1
@DavidRicherby Il raggruppamento per attributo (ovvero la categorizzazione) fa sicuramente parte della scienza: ad esempio una domanda interessante per uno StackExchange di biologia potrebbe essere: " Quali altri animali camminano su due zampe? " Pertanto considero la domanda sopra molto appropriata per l'Informatica StackExchange di Computer Science .
halloleo,

Risposte:


23

Wikipedia ha un ampio elenco di lingue che utilizzano la regola off-side 1 :

  • ABC
  • fischio
  • BuddyScript
  • Cobra
  • CoffeeScript
  • Convergere
  • Curry
  • Elisir ( , do:blocchi)
  • Olmo
  • F # (se #light "off"non specificato)
  • Genio
  • Haskell (solo per where, let, do, o case ... ofclausole quando graffe sono omessi)
  • Informare 7
  • ISWIM, il linguaggio astratto che ha introdotto la regola
  • LiveScript
  • Miranda
  • Nemerle
  • Nim
  • Occam
  • Promal
  • Pitone
  • Schema, quando si utilizza ad esempio SRFI 119
  • Rotazione
  • XL

1: non ho mai sentito questo termine prima di me stesso.


2
La regola del fuorigioco è una scoperta eccitante!
halloleo

3
Non so se è una lingua come tu o Wikipedia capisci, ma anche i Makefile usano il rientro.
TheWildHealer,

@TheWildHealer L'articolo di wikipedia ha anche una sezione con linguaggi non di programmazione (inclusi elementi come Make, YAML, RST). Non l'ho citato perché OP ha chiesto dei linguaggi di programmazione.
Bergi,

Hai ragione, la prossima volta sarò sicuro di aprire gli occhi, grazie.
TheWildHealer,

10

Ci sono: Elm , Haskell , il suo predecessore Miranda e il suo predecessore ISWIM , YAML in cui gli spazi sono cruciali per la sintassi e le schede sono proibite, OCCAM , Coffee script e Cokescript sono entrambi compilatori da linguaggio a linguaggio con JavaScript come target e Whitespace esoterici .

Esiste anche Agda , un teorema interattivo che probabilmente non è quello che avevi in ​​mente, ma il suo lexer è molto sensibile allo spazio bianco.
Makefile , che raccoglie obiettivi con intenzioni basate su tab.


1
Anche Miranda, la lingua su cui si basava Haskell.
kne

1
Agda ha una sintassi molto simile a quella di Haskell, ed è sensibile sia al rientro che agli spazi: (x-y)non lo è (x - y)) anche se potrebbe non essere "pratico" per l'OP.
chi

1
Inoltre, CoffeeScript e il noto CokeScript
Bergi,

5
Se YAML conta, allora suppongo che anche i Makefile debbano essere
Izkata

1
C'è anche PureScript .
Duplode

4

Fai adatta descrizione, anche se probabilmente non è proprio quello che avete in mente, con la sua limitata sintassi e il potere.

Indica tristemente i suoi blocchi di codice ( ricette ) con una particolare forma di spazio bianco: un carattere di tabulazione. Sono disponibili modi alternativi (ad es. GNU Make supporta l'utilizzo di un carattere alternativo ), ma raramente utilizzati nella pratica.

Un altro esempio in bilico sul bordo è il Playbook Ansible . Sono specificati in YAML , che dipende fortemente dal rientro. YAML non è un linguaggio di programmazione, ma i playbook Ansible possono essere considerati programmi specifici del dominio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.