Які ще мови програмування, крім Python та попередника, використовуються відступи для визначення кодових блоків? [зачинено]


12

Python досить відомий використовує відступ для синтаксичного визначення блоків коду. (Див. Складені твердження у довідці про мову Python). Після років використання Python мене все ще заінтригує ця функція синтаксису і дуже полюбляє її.

Але мені цікаво: окрім Python та його «попередника» (*) мови ABC, які інші мови програмування існують там, використовуючи відступи для визначення блоків коду ? Кодові блоки означають тут "декілька висловлювань, які певним чином трактуються як один компонент".

Мене особливо цікавлять практичні мови програмування, але, можливо, варто згадати і езотеричні мови .


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


15
Я не думаю, що "будь ласка, дайте мені список мов програмування з функцією X" - питання інформатики.
Девід Річербі

2
Чому, саме мова Whitespace вимагає належного відступу для її основного методу вираження.
пінгвін359

1
YAML з довгими формами, мабуть, варто згадати, хоча це не мова програмування в найсуворішому сенсі, оскільки це, мабуть, одна з наступних найбільш вірогідних мов із цією особливістю для того, щоб хтось стикався після Python.
Остін Хеммельгарн

1
@ penguin359 Я також думав про Whitespace. Це не відповідь на питання, тому що відступ, афакт, не використовується для визначення блоків; але це, звичайно, мова, якою білий простір є найбільш значущим в цілому.
Пітер -

1
@DavidRicherby Групування за атрибутом (тобто категоризацією), безумовно, є частиною науки: наприклад, цікавим питанням для біології StackExchange може бути: " Які інші тварини ходять на двох ногах? " Тому я вважаю, що вищезазначене питання є дуже підходящим для StackExchange Computer Science. .
halloleo

Відповіді:


23

У Вікіпедії є широкий перелік мов, які використовують правило 1 для іншої сторони :

  • ABC
  • Бу
  • BuddyScript
  • Кобра
  • CoffeeScript
  • Сходиться
  • Каррі
  • Еліксир ( , do:блоки)
  • В'яз
  • F # (якщо #light "off"не вказано)
  • Джині
  • Haskell (тільки для where, let, do, або case ... ofположення , коли дужки опущені)
  • Інформуйте 7
  • ISWIM - абстрактна мова, яка запровадила правило
  • LiveScript
  • Міранда
  • Немерле
  • Нім
  • оккам
  • ПРОМАЛ
  • Пітон
  • Схема, коли використовується, наприклад, SRFI 119
  • Спіна
  • XL

1: Я ніколи раніше не чув цього терміна.


2
Правило відсторонення - захоплююча знахідка!
halloleo

3
Не знайте, чи це мова, як ви її розумієте, або вікіпедія, але Makefiles також використовують відступи.
TheWildHealer

@TheWildHealer У статті wikipedia також є розділ з мовами, які не програмують (включаючи такі речі, як Make, YAML, RST). Я не цитував це, тому що ОП запитував про мови програмування.
Берги

Ви маєте рацію, наступного разу я обов’язково відкрию очі, дякую.
TheWildHealer

10

Є: Elm , Haskell , його попередник Міранда та його попередник ISWIM , YAML, де пробіли мають вирішальне значення для синтаксису, а вкладки заборонені, OCCAM , сценарій кави та Cokescript обидва є компіляторами мови з JavaScript як цільовим та езотеричним Whitespaces .

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


1
Також Міранда, основана на мові Haskell.
коліна

1
Агда має синтаксис, схожий на Haskell, і чутливий як до відступу, так і для пробілів: (x-y)немає (x - y)), навіть якщо це може бути недостатньо "практичним" для ОП.
чі

1
Крім того , CoffeeScript і ледь відомий CokeScript
Берги

5
Якщо YAML рахується, то, мабуть, Makefiles повинен також бути
Ізката

1
Також є PureScript .
дуплод

4

Складіть відповідність вашому опису, навіть якщо це, мабуть, не зовсім те, що ви маєте на увазі, з його обмеженим синтаксисом та потужністю.

Він ганебно вказує свої кодові блоки ( рецепти ) з певною формою пробілів: один символ вкладки. Доступні альтернативні способи (наприклад, GNU Make support, використовуючи альтернативний символ ), але рідко використовуються на практиці.

Інший приклад, що висить на краю, - це ігрові книжки Ansible . Вони вказані в YAML , що сильно залежить відступом. YAML не є мовою програмування, але ігрові книжки Ansible можуть розглядатися як доменні програми.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.