19

R (GNU S の R) のプログラミングパラダイムは何ですか?

私は、さまざまな概念パラダイムのプログラミング言語 (C++、Java、Prolog、およびその他のいくつかの言語でプログラミングされている) に精通していると思いますが、独自の小さな R スクリプトを既に作成していますが、R がどのパラダイムを表すことになっているのかわかりません。

4

2 に答える 2

21

Rは、オブジェクト指向プログラミングパラダイムと関数型プログラミングパラダイムの混合をサポートします。

機能面では:

  • 第一級関数を持っています
  • 引数の遅延評価があります
  • 純粋で副作用のない機能を促進します

だが

  • 末尾呼び出しの再帰は実装されていません
  • 純粋でない関数を簡単に作成できます

オブジェクト指向側:

  • 3つの組み込みOOパラダイムがあります。S3とS4は不変であり、ジェネリック関数スタイルOOをサポートし、参照クラス(別名R5)は可変であり、より一般的なメッセージパッシングスタイルOOをサポートします。

  • S4は、OOスタイルのcommon lisp(CLOS)とdylanの影響を強く受けています。

  • 他のタイプのOOを提供する寄稿パッケージも多数あります:proto、、、。mutatrR.ooOOP

だが

  • 組み込みのOOツールは、糖衣構文をほとんど提供しません。
于 2011-05-25T02:39:57.153 に答える
5

ウィキペディアによると(強調を追加)、

R は、関数を使用した手続き型プログラミングと、汎用関数を使用したオブジェクト指向プログラミングをサポートしています。ジェネリック関数は、渡される引数の型によって異なる動作をします。つまり、汎用関数はオブジェクトの型を認識し、その型のオブジェクトに固有の関数 (メソッド) を選択 (ディスパッチ) します。たとえば、R には、単純な "print(objectname)" 構文で R 内のほぼすべてのタイプのオブジェクトを出力できる汎用の print() 関数があります。

于 2011-05-23T14:48:22.043 に答える