他のC#開発者が、csc.exe
のコンパイラ指令で、空白の種類によってコードブロックが作成されるHaskellやPythonを重要なものにする改善があるのだろうかと思います。PythonやHaskellのようなC#の重要な空白?
これは確かにC-style languagesから巨大な出発のだろうが、C#が最終的には(まだ中括弧とセミコロンを持っているでしょう)CILまでコンパイルされているので、それは本当にコンパイラだけの解析トリックであるように私には思えますどちらの方法でも処理できます(つまり、重要な空白を扱うこともできないこともあります)。 curliesやセミコロンは、しばしばC#&への参入障壁であるため、実際にはヘルパーを解析しているだけで、Haskell/Pythonでは取り除くことができます。
F#はこれを#lightコンパイラ指令で処理します。これはLightweight syntax option in F# 1.1.12.3で読むことができます。
私は同じことをC#で見ていきたいと思います:#SigSpaceまたはsomesuchという指示は、空白の点で(例として)Haskellファイルのようにソースを扱うように指示します。
標準C#:
public void WhiteSpaceSig()
{
List<string> names = new List<string>();
List<string> colors = new List<string>();
foreach (string name in names)
{
foreach (string color in colors)
{
// bla bla bla
}
}
}
重要な空白:
#SigSpace
public void WhiteSpaceSig()
List<string> names = new List<string>()
List<string> colors = new List<string>()
foreach (string name in names)
foreach (string color in colors)
// bla bla bla
私はC#でこれを望んでいることを言っていないんだけど、私はトレードオフが何であるかに興味があります。私の推測では、ほとんどのC#開発者は構文に慣れているので、人工的なものを見ることはできません(最終的にはコードを読みやすくするかもしれませんが)。
私はPythonを使用したいと思うようなコードを読み書きしたいと思ったら。あなたにとっては涼しいかもしれませんが、他の開発者は完全に非標準的なので、痛みを感じるでしょう。 –
F#では "#light"を使用しません。これは単にデフォルトです。 – Brian
"IL(中括弧とセミコロンはまだあります)" - ここで深刻な誤解があることを恐れています。 C#はILバイトコードにコンパイルされます。これは一連のオペコードなどです。そのレベルには中カッコやセミコロンはありません(C#レベルでコーディングする開発者にとっては役に立たないでしょう)。ILASMのテキストILフォーマットでも、多くのC#レベルの構造体には中括弧やセミコロンは使用されません。なぜなら、C#コーダーとは関係がないからです。 – itowlson