Python довольно широко использует отступы для синтаксического определения блоков кода. (См. Составные операторы в Справочнике по языку Python). После многих лет использования Python я все еще заинтригован и очень люблю эту функцию синтаксиса.
Но мне интересно: кроме Python и его "предшественника" (*) языка ABC, какие еще языки программирования используют отступ для определения блоков кода ? Блоки кода здесь означают «несколько операторов, которые в некотором роде рассматриваются как один компонент».
Мне особенно интересны практические языки программирования, но, возможно, стоит упомянуть и эзотерические языки .
(*): « Предшественник » - это мой выбор слова, если я не знаю лучшего слова. Гидо ван Россум, создатель Python, описал отношения между Python и ABC в отношении отступов в интервью так: « Выбор отступов для группировки не был новой концепцией в Python; я унаследовал это от ABC ».
источник
Ответы:
В Википедии имеется обширный список языков, которые используют правило офсайда 1 :
1: я никогда не слышал этот термин перед собой.
источник
Это Elm , Haskell , его предшественник Miranda и его предшественник ISWIM , YAML, где пробелы имеют решающее значение для синтаксиса, а табуляции запрещены, OCCAM , Coffee script и Cokescript являются языковыми компиляторами с JavaScript в качестве целевого и эзотерического пробелов .
Существует также Agda - интерактивный тестер теорем, который, вероятно, не то, что вы имели в виду, но его лексер очень чувствителен к пустому пространству.
Makefile , который собирает цели с намерениями на основе вкладок.
источник
(x-y)
нет(x - y)
), даже если это может оказаться недостаточно «практичным» для OP.Make соответствует вашему описанию, хотя, вероятно, это не совсем то, что вы имеете в виду, с его ограниченным синтаксисом и мощью.
Это позорно указывает его блоки кода ( рецепты ) с определенной формой пробела: один символ табуляции. Доступны альтернативные способы (например, GNU Make поддерживает использование альтернативного символа ), но редко используется на практике.
Другой пример, зависший на краю, - Ansible playbooks . Они указаны в YAML , который сильно зависит от отступов. YAML не является языком программирования, но Ansible playbooks можно рассматривать как предметно-ориентированные программы.
источник