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.