2009-07-21 10 views
12

私は、主流のGUI /データベース/コミュニケーションフレームワークにしっかりと結びついた強力な言語があることを喜んで嬉しく思います。Ascii演算子が定義可能な場合は、なぜUnicodeシンボルを使用しないのですか?

私はこれをどこに投稿するかはわかりませんが、ここでは最高の場所と思われます。

私は、Unicodeシンボル文字を演算子または関数名として使用する必要があります。私は構文的な砂糖が好きですが、私はそれを必要としません。

Guy SteeleはACMのコミュニケーションで、「*」はAsciiからの乗算として採用されたが、私のソフトウェアはUnicodeで動作するので、Asciiにもう縛られていないことを指摘しました。 !。

の$%& * + -/< =>、@^|〜:ローカライズの

一部は地元のプログラマが含まれて?。なぜF#で定義できる演算子のセットを制限するのですか? C#とF#の多くのUnicode IsLetterを識別子で受け入れることは、直交していません。

また、F#は論理、数学、物理学者などの問題の記号操作に使用される可能性があります。基本演算子の言語に直接マッピングすると作業がはるかに簡単になります。 (F#とC#は多くのUnicode IsLetterとIsDigit 'を受け入れますか?これはUnicode IsSymbolを許可する要求ですか?*の優先順位を持つ演算子、または "+"は単項演算子と二項演算子の両方であるため、

論理学者、数学者、物理学者などのドメイン特有のニーズを考えてみましょう。私はむしろ、数学記号を使って記号的な微分器または積分器を書いていきたいと思います。既に撮影した事業者のアスキー順列よりも

  • ロジック:∀∃
  • 数学⇒:Σ∫∂
  • グループの理論:≤≥∈∉
  • 集合論:⊆⊇⊃∪∩
  • テンソル:⊗

私は他の言語で多くの言語を書いてきたが、F#がしっかりあるので.Net-

Unicode-operator F#sourceを取り、それをAscii-operator F#sourceにマップするトランスレータを敷き詰めるのは簡単ではありません。

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

演算子と変換は簡単です。しかし、プログラマが自分のソースを見ている間に翻訳を確実にコンパイルすることはできますか? line-for-lineを正しくマップすると、変数をポイントしてその値を確認できるようにするにはどうすればよいですか?

+0

私はF#のタグを追加しましたが、そうするために、私は数学のタグを取り除く必要がありました。私はそれが公正な取引だと考えています(ここでの中心的な問題は、数学者が熟考するものではなく、人々が今考えていることです) – tialaramex

+3

http://cs.hubfs.net/forums/thread/9690.aspxも参照 – Brian

答えて

1

なスカラ座などの他の言語、ASCIIの範囲外から許可演算子を行う - 数学記号(SM)、その他の記号(SO)

1

あなたは新しい関数型プログラミング言語であるProject Fortressに興味がある可能性があり、その(多くの他の機能の中で)Unicode文字セットを取り入れています。特に、いくつかのサンプルコードを含むMathematical Syntax in Fortressのページを参照してください。

+0

私の興味.NetはC++のパフォーマンスを必要としないアプリケーションを作成するために使用されるため、F#では強力です。そしてProject Fortressは面白そうに聞こえる。ありがとう。 –

2

Visual Studio Galleryで利用可能なF#のための数学(ユニコード)シンボル拡張があります。これは、あなたが例えば、Unicodeのシンボルを定義することができます。:

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

let total = ∑myList 
関連する問題