読者です 読者をやめる 読者になる 読者になる

流れるようなインターフェイス,名前付き引数,クエリ式

.NET

C# 4.0 では名前付き引数・省略可能引数が使えるようになるので,シンタックス弄りがもう一段階フリーダムに.シンタックス関連は,深入りすべきなのか適当に引き返すべきなのか,正直よく分からんです.
個人的関心事をざっと列挙してみましたが,網羅的にまとめてくれる人激しく募集.

  • 関数/操作のチェインで要求を記述する方法
    • 実装技術
      • non-intrusive / intrusive という軸
      • メソッドチェイン / 演算子オーバーロード という軸 (id:NyaRuRu:20080316:p2)
      • Implicit Conversion (Scala)
      • 拡張メソッド (C#/Visual Basic)
  • データとして要求を記述する方法
    • 実装技術
      • 名前付き引数・省略可能引数 (Python / Visual Basic / C# 4.0 / ...)
      • ディクショナリ (ハッシュテーブル) の簡易記法 (id:NyaRuRu:20071211:p3)
      • JSON
      • Anonymous Type (C#) (id:NyaRuRu:20080706:p1)
      • Query by Example (id:NyaRuRu:20080617:p1)
    • 類似事例から学ぶべきことはないか?
      • コマンドラインオプション (gcc --help / ./configure --help)
        • gcc --help ぐらい多くなったときにスケールするか
        • zsh で ./configure のあとに TAB 補完やってくれるのかっこいい
      • いわゆる設定ダイアログボックス
      • CreateFont vs CreateFontIndirect
  • 文法レベルで手を加えた言語内 DSL
    • 実装技術
      • 流れるようなインターフェイスで文法を定義する / 最初から専用文法を定義する の軸
      • クエリ式 (C# / Visual Basic)
  • その他
    • 問題領域の分類
      • ID3DXMatrixStack (行列から行列への変換の連鎖)とか,LINQ (IEnumerable<T> から IEnumerable<U> への変換の連鎖)とか,数学的に見てもそりゃ相性良いでしょうな分野がある (id:NyaRuRu:20080313:p1)
    • バージョニング
    • テスト



話は変わりますが,PLINQ もだいぶシンタックスの微調整をやっている感じがありますね.AsSequential とか AsOrdered とか WithDegreeOfParallelism とか.シンタックス好きーは以下お勧め.