Какие другие языки программирования, кроме Python и предшественника, используют отступ для определения блоков кода? [закрыто]

12

Python довольно широко использует отступы для синтаксического определения блоков кода. (См. Составные операторы в Справочнике по языку Python). После многих лет использования Python я все еще заинтригован и очень люблю эту функцию синтаксиса.

Но мне интересно: кроме Python и его "предшественника" (*) языка ABC, какие еще языки программирования используют отступ для определения блоков кода ? Блоки кода здесь означают «несколько операторов, которые в некотором роде рассматриваются как один компонент».

Мне особенно интересны практические языки программирования, но, возможно, стоит упомянуть и эзотерические языки .


(*): « Предшественник » - это мой выбор слова, если я не знаю лучшего слова. Гидо ван Россум, создатель Python, описал отношения между Python и ABC в отношении отступов в интервью так: « Выбор отступов для группировки не был новой концепцией в Python; я унаследовал это от ABC ».

halloleo
источник
15
Я не думаю, что «пожалуйста, дайте мне список языков программирования с функцией X» - это вопрос информатики.
Дэвид Ричерби
2
Да, есть сам язык Whitespace , который требует правильного отступа для своего основного метода выражения.
penguin359
1
Полноценный YAML, вероятно, стоит упомянуть, хотя это и не язык программирования в самом строгом смысле этого слова, так как, вероятно, это один из следующих наиболее вероятных языков с этой функцией, с которыми кто-то столкнется после Python.
Остин Хеммельгарн
1
@ penguin359 Я тоже думал о пробелах. Это не ответ на вопрос, потому что отступы, на самом деле, не используются для определения блоков; но это, безусловно, язык, на котором пробел является наиболее значительным в целом.
Питер - Восстановить Монику
1
@DavidRicherby Группирование по атрибутам (то есть категоризация), безусловно, является частью науки: например, интересный вопрос для биологии StackExchange может быть: « Какие другие животные ходят на двух ногах? » Поэтому я считаю, что приведенный выше вопрос очень подходит для информатики StackExchange ,
Halloleo

Ответы:

23

В Википедии имеется обширный список языков, которые используют правило офсайда 1 :

  • азбука
  • Бу
  • BuddyScript
  • кобра
  • CoffeeScript
  • Converge
  • Карри
  • Эликсир ( , do:блоки)
  • вяз
  • F # (если #light "off"не указано)
  • джинн
  • Haskell (только для where, let, do, или case ... ofположения , когда скобки опущены)
  • Информ 7
  • ISWIM, абстрактный язык, который ввел правило
  • LiveScript
  • Миранда
  • Nemerle
  • Nim
  • Оккам
  • PROMAL
  • питон
  • Схема при использовании, например, SRFI 119
  • Вращение
  • XL

1: я никогда не слышал этот термин перед собой.

Берги
источник
2
Правило офсайда - захватывающая находка!
Halloleo
3
Не знаю, является ли это языком, как вы или википедия его понимаете, но Makefiles также использует отступы.
TheWildHealer
@TheWildHealer В статье в Википедии также есть раздел с языками, не относящимися к программированию (включая такие вещи, как Make, YAML, RST). Я не цитировал это, потому что OP спросил о языках программирования.
Берги
Вы правы, в следующий раз я обязательно открою глаза, спасибо.
TheWildHealer
10

Это Elm , Haskell , его предшественник Miranda и его предшественник ISWIM , YAML, где пробелы имеют решающее значение для синтаксиса, а табуляции запрещены, OCCAM , Coffee script и Cokescript являются языковыми компиляторами с JavaScript в качестве целевого и эзотерического пробелов .

Существует также Agda - интерактивный тестер теорем, который, вероятно, не то, что вы имели в виду, но его лексер очень чувствителен к пустому пространству.
Makefile , который собирает цели с намерениями на основе вкладок.

Зло
источник
1
Также Миранда, язык, на котором был основан Haskell.
КНЭ
1
Agda имеет очень похожий на Haskell синтаксис и чувствителен как к отступам, так и к пробелам: (x-y)нет (x - y)), даже если это может оказаться недостаточно «практичным» для OP.
ч
1
Кроме того , CoffeeScript и едва известный CokeScript
Берги
5
Если YAML имеет значение, то я полагаю, что Makefiles тоже должен это
делать
1
Есть также PureScript .
Дуплод
4

Make соответствует вашему описанию, хотя, вероятно, это не совсем то, что вы имеете в виду, с его ограниченным синтаксисом и мощью.

Это позорно указывает его блоки кода ( рецепты ) с определенной формой пробела: один символ табуляции. Доступны альтернативные способы (например, GNU Make поддерживает использование альтернативного символа ), но редко используется на практике.

Другой пример, зависший на краю, - Ansible playbooks . Они указаны в YAML , который сильно зависит от отступов. YAML не является языком программирования, но Ansible playbooks можно рассматривать как предметно-ориентированные программы.

reinierpost
источник