13

主流の GUI/データベース/通信フレームワークに緊密に結び付けられた強力な言語がついに登場したことを喜んでいるのは、私も多くの人々と同じだと思います。

どこに投稿すればよいか迷ったのですが、ここがベストな場所のようです。

Unicode 記号文字を演算子または関数名として使用する必要があります。シンタックス シュガーが欲しいのですが、必要ありません。

Guy Steele は、Communications of the ACM で、"*" が Ascii から乗算として採用されたときに強制的に選択されたものであると指摘しましたが、私のソフトウェアは Unicode で動作するため、もう Ascii に縛られていません。

!$%&*+-./<=>?,@^|~:

ローカリゼーションの一部には、ローカル プログラマーが含まれます。F# で定義できる演算子のセットを制限するのはなぜですか? これは、C# および F# が識別子で多くの Unicode IsLetter を受け入れていることと直交していません。

また、F# は、論理、数学、物理学者などの問題の記号操作に使用される可能性があります。基本的な演算子の言語への直接マッピングがあれば、作業がはるかに簡単になります。(F# と C# は、多くの Unicode IsLetter? と IsDigit' を受け入れますか? これは、Unicode IsSymbol? を許可する要求です。たとえば、* の優先順位を持つ演算子として、または、「+」は単項演算子と 2 項演算子の両方であるため、 + の優先順位を我慢して、括弧で囲まれたグループ化で違いを補うことができました。

論理学者、数学者、物理学者などのドメイン固有のニーズを考慮してください。既に使用されている演算子のアスキー順列よりも、数学記号を使用して記号微分器または積分器を書きたいと思います。

  • ロジック: ∀ ∃ ⇒
  • 数学: ∑ ∫ ∂</li>
  • 群論: ≤ ≥ ∈ ∉</li>
  • 集合論: ⊆ ⊇ ⊃ ∪ ∩</li>
  • テンソル: ⊗</li>

私は他の言語で多くの言語を書いてきましたが、F# は .Net と緊密に統合されているため、この問題は言語サポートなしでは特別な課題をもたらします。

Unicode 演算子の F# ソースを取得し、それを 1 行ずつ Ascii 演算子の F# ソースにマップするトランスレータを作成するのは簡単です。

しかし、デバッグ時に、プログラマーが翻訳されていないソースを表示していることを確認するにはどうすればよいでしょうか? そして、彼らは変数の値を見ることができます。

演算子とそれらの変換は簡単です。しかし、プログラマーが自分のソースを見ている間に、翻訳がコンパイルされることを確認するにはどうすればよいでしょうか? 行ごとに正しくマッピングした場合、変数を指してその値を確認できるようにするにはどうすればよいですか?

4

4 に答える 4

3

Visual Studio ギャラリーで利用可能な F# の数学 (Unicode) 記号拡張があります。

これにより、次のような Unicode シンボルを定義できます。

let inline (~∑) xs = xs |> Seq.sum

let total = ∑myList
于 2013-02-05T15:56:34.987 に答える
1

(他の多くの機能の中でも)Unicode文字セットを採用した新しい関数型プログラミング言語であるProjectFortress興味があるかもしれません。特に、サンプルコードが含まれているFortressの数学構文のページを参照してください。

于 2009-07-21T12:00:16.847 に答える
1

このチェックに関する興味深い議論については、http: //cs.hubfs.net/forums/thread/9690.aspxを参照してください。

于 2009-07-22T06:39:06.943 に答える
1

Scala などの他の言語では、ASCII 範囲外の演算子を使用できます -- 数学記号 (Sm) およびその他の記号 (So)

于 2009-07-21T09:28:07.123 に答える