汎用プログラミングの言語としてのScala


13

ガルシアらによる論文「汎用プログラミングのための言語サポートの拡張比較研究」。汎用プログラミングのプログラミング言語機能の興味深い比較を示します。

ここに画像の説明を入力してください

用語の簡単な説明:

ここに画像の説明を入力してください

誰でもこのフレームワーク内で汎用プログラミングのScalaサポートをテストできますか?つまり、可能であれば説明付きの最初の表に列を追加します。


3
コンピュータサイエンスに再投稿。しないでください。質問をより適切と思われる別のサイトに移動する場合は、モデレーターの注意を喚起し、移行をリクエストしてください。
ジル 'SO-悪であるのをやめる

2
正確な答えはpにあります。Oliveira et al。による17「オブジェクトおよび暗黙的としての型クラス
アルテムPelenitsyn

この参照は、CS.SEベータ版の質問へのリンクがTwitterから寄せられたものです。Miles Sabin(@milessabin on Twitter)とAlexey Romanovに感謝します。
アルテムPelenitsyn

Miles Sabinsの形のないライブラリと、te libの背後にある彼の動機をご覧ください。私はいくつかの論文を参照していると思う
-AndreasScheinert

回答:


7

OP のコメントの1つで述べたように、これはScalaが一般的なプログラミングサポートを比較する方法を説明する表です。 ソースPDFへのリンク

Scalaがリストされたテーブル

後で、次の要約が提供されます。

Scala
CONCEPTパターンを使用すると、複数のタイプの概念、複数の制約をモデル化し、遡及的なモデリングをサポートできます。さらに、Scalaの暗黙的サポートは、追加のオーバーヘッドに関するJavaおよびC#ソリューションの欠点がScalaに適用されないことを意味します。したがって、Scalaは、暗黙的な引数の推論と遡及的なモデリング基準の両方で高いスコアを獲得しています。セクション6では、Scalaでは型メンバーと依存メソッド型を通じて関連型がサポートされており、型メンバーは型エイリアスとしても使用できることを示しています。
セクション3に示すように、Scalaはレキシカルスコープのモデルをサポートしています。さらに、型チェックは完全にモジュール化されています。重複する暗黙の優先順位付けは、zipWithNで示されているように、概念ベースのオーバーロードのサポートを提供しますセクション6.5の例。ただし、重複するモデルはサブタイピング階層を使用して構造化する必要があり、必ずしも望ましいとは限りません。したがって、この機能のスコアは十分です。最後に、Scalaは一流の関数を完全にサポートしており、等式制約もサポートしています。
要約すると、Scalaは汎用プログラミング機能の優れたサポートを備えた言語であり、G(大規模な汎用プログラミングの言語として特別に設計された)やHaskell(一般的なプログラミングを非常によくサポートしていると認識されています)。

そして要約では:

型メンバーと依存メソッド型は言語に特別な力を加え、2つのメカニズムの組み合わせにより、関連する型を表現できます。暗黙的と組み合わせることで、型メンバーと依存メソッド型により、Scalaは大規模なプログラミングの一般的な言語になります

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.