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 ”.
źródło
Odpowiedzi:
Wikipedia ma obszerną listę języków, które stosują zasadę off-side 1 :
1: Nigdy wcześniej nie słyszałem tego terminu.
źródło
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.
źródło
(x-y)
nie jest(x - y)
), nawet jeśli może nie być wystarczająco „praktyczna” dla OP.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.
źródło