コードブロックを定義するためにインデントを使用しているPythonと前身以外のプログラミング言語はどれですか?[閉まっている]


12

Pythonは、コードブロックを構文的に定義するためにインデントを使用することで有名です。(Python言語リファレンスの複合ステートメントを参照してください)。Pythonを何年も使用した後も、この構文機能に興味を持ち、非常に気に入っています。

しかし、私は疑問に思います:Pythonとその「前身」(*)言語ABC は別として、コードブロックの定義にインデントを使用する他のプログラミング言語がありますか?コードブロックとは、ここでは「何らかの方法で1つのコンポーネントとして扱われる複数のステートメント」を意味します。

私は特に実用的なプログラミング言語に興味がありますが、難解な言語にも言及する価値があります。


(*): " Predecessor "は、ここでより良い単語を知るというデフォルトの単語の選択です。グイド・ヴァンロッサム、パイソンの作成者は、PythonとABCに関するインデントとの関係を説明したインタビューで、このような「グループ化するためのインデントの選択は、Pythonで新しい概念ではありませんでした。私はABCからこれを継承しました。


15
「機能Xを備えたプログラミング言語のリストを教えてください」は、コンピューターサイエンスの問題だとは思いません。
デヴィッドリチャービー

2
なぜ、それが表現の核となる方法のために適切なインデントを必要とするホワイトスペース言語自体があるのです。
ペンギン359

1
長い形式のYAMLは、厳密な意味ではプログラミング言語ではありませんが、おそらく言及する価値があります。おそらく、Pythonの後に出会う人にとって、この機能を備えた次の最も可能性の高い言語の1つです。
オースティンヘメルガーン

1
@ penguin359ホワイトスペースについても考えました。インデントはブロックを定義するために使用されないため、質問に対する答えではありません。しかし、全体的に空白が最も重要な言語です。
ピーター-モニカの復活

1
属性(すなわち分類)によって@DavidRicherbyグループ化は間違いなく、科学の一部です:例:StackExchangeは可能性が生物学のための興味深い質問:「他の動物は2本足で歩く何?」そこで私は上記の質問は非常にコンピュータサイエンスStackExchangeのための適切な考慮します。
ハレレオ

回答:


23

ウィキペディアには、オフサイドルール1を使用する言語の広範なリストがあります。

  • ABC
  • ブー
  • バディスクリプト
  • コブラ
  • CoffeeScript
  • 収束
  • カレー
  • エリキシル(, do:ブロック)
  • エルム
  • F#(#light "off"指定されていない場合)
  • 精霊
  • ハスケル(だけのためにwhereletdo、またはcase ... of中括弧が省略されている節)
  • 通知7
  • ISWIM、ルールを導入した抽象言語
  • LiveScript
  • ミランダ
  • ネメルル
  • ニム
  • occam
  • 約束
  • Python
  • スキーム、たとえばSRFI 119を使用する場合
  • スピン
  • XL

1:この言葉を聞いたことがありません。


2
オフサイドルールはエキサイティングな発見です!
ハレレオ

3
あなたやウィキペディアが理解している言語かどうかはわかりませんが、Makefileはインデントも使用します。
-TheWildHealer

@TheWildHealerウィキペディアの記事には、非プログラミング言語(Make、YAML、RSTなどを含む)のセクションもあります。OPがプログラミング言語について尋ねたので、私はそれを引用しませんでした。
ベルギ

あなたは正しいです、次回は必ず目を開けるでしょう、ありがとう。
-TheWildHealer

10

あり:エルムハスケル、その前身ミランダとその前身ISWIMYAMLスペースが構文とタブのために重要である禁止され、OCCAMコーヒースクリプトCokescriptは、ターゲットと難解とJavaScriptを使用して言語コンパイラに言語です両方の空白

また、Agda-インタラクティブな定理証明器もあります。これはおそらくあなたが思っていたものではありませんが、そのレクサーは空白に非常に敏感です。
Makefile。タブベースの意図を持つターゲットを収集します。


1
また、Haskellのベース言語であるミランダ。
クネ

1
Agdaは非常にHaskellに似た構文を持ち、インデントとスペースの両方に敏感です:(x-y)is (x - y))OPにとって「実用的」ではない場合でも。
チー

1
また、CoffeeScriptのとほとんど知られていないCokeScript
Bergi

5
YAMLがカウントされる場合、Makefileも同様に必要であると思われます
-Izkata

1
PureScriptあります。
二脚

4

Makeは、構文とパワーが制限されているため、おそらく思い浮かぶようなものではありませんが、説明に合っています。

これは、悪名高いそのコードブロック(示しレシピを 1つのタブ文字:空白の特定の形で)。別の方法も利用できます(GNU Makeは代替文字の使用をサポートします)が、実際にはめったに使用されません。

端に浮かぶもう1つの例は、Ansibleプレイブックです。これらは、インデントに大きく依存するYAMLで指定されています。YAMLはプログラミング言語ではありませんが、Ansibleプレイブックはドメイン固有のプログラムと見なすことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.