3
名前付き関数を定義するための重複した構文は、言語設計の悪い決定ですか?
私は楽しみのためにプログラミング言語をモデリングしており、構文はScala、特に関数定義に大きく影響されています。 私の言語は、def構文(クラスメソッド)によって定義された関数と値に割り当てられた匿名関数(を使用して作成された)を区別しないため、設計上の問題が発生しました=>- 実装と動作の両方の違いが取り除かれます。 その結果、次の2つの定義は同じ意味になります。 def square(x: Int) = x*x val square = (x: Int) => x*x 後者の形式(即時の無名関数の割り当て)が通常の状況で使用される理由はありません- フォームの代わりにそれを使用することは単に可能defです。 名前付き関数を定義するためにそのような重複した構文を使用すると、言語の直交性やその他の設計上の側面が損なわれますか? メソッドと名前付き関数の短くて直感的な定義(を介してdef)と匿名関数の短い定義(を使用=>)が可能になるため、このソリューションを選択します。 編集:Scala は 2つを区別します。無名関数はdef、Scalaで定義されたメソッドと同じではありません。違いは比較的微妙ですが、以前にリンクした投稿を参照してください。