私は、中置、後置、前置、または複数の単語で構成される関数の定義を許可することで、DSL の作成に非常に適した言語を作成することを熟考してきました。たとえば、中置乗算演算子を次のように定義できます (multiply(X,Y) は既に定義されています)。
a * b => multiply(a,b)
または、後置の「二乗」演算子:
a squared => a * a
または、変数が散在する 2 つのキーワードを含む C または Java スタイルの三項演算子:
a ? b : c => if a==true then b else c
明らかに、そのような言語にはあいまいさの余地がたくさんありますが、(型推論で) 静的に型付けされている場合、ほとんどのあいまいさは排除され、残っているものは構文エラーと見なすことができます (括弧を追加することで修正されます)。適切な)。
これを非常に困難にする、不可能にする、または単に悪い考えにする理由があるとは思いませんか?
編集:多くの人が、これまたはこのようなことを行う可能性のある言語を指摘してくれましたが、実際には、独自のパーサーを実装する方法、またはそうする場合に発生する可能性のある問題へのポインターに興味があります。