統計解析R たぶんpart3くらい (587レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
480: デフォルトの名無しさん [] 2023/03/04(土) 20:31:08.80 ID:0X36s/jF(1/3) AAS
## Rにおけるオブジェクト指向への取り組み
趣旨は新規フレームワークR7の紹介だが、既存のフレームワークの俯瞰図
としても使いやすいと思う。
* [What is R7? A New OOP System for R](https://www.jumpingrivers.com/blog/r7-oop-object-oriented-programming-r/)
## オブジェクト指向とは?
次の記事を取り上げてみる。
* [Object Oriented Programming Features of Rust](https://doc.rust-lang.org/book/ch17-00-oop.html)
内容については賛否両論だと思う。しかし、箇条書きできるということが、
オブジェクト指向が単一の概念でないことを示しているように思う。
## S3はオブジェクト指向か?
比較のために、S3のキーワード`default`を使わないで書く。
``` {r a_3770, dependson = ""}
none = with (new.env (), {
to_string = \(x, ...) UseMethod ("to_string", x)
as_string = \(x, ...) UseMethod ("as_string", x)
to_string.Base = \(x, ...) as_string (x, ...)
as_string.Base = \(x, ...) to_string (x, ...)
to_string.Derived = \(x, ...) paste0 ("hello ", class (x))
as_string.Derived = as_string.Base
structure (identity, class = "Derived") |> as_string () |> print ()
});
```
`Base`クラスは、関数`to_string`か関数`as_string`の"どちらか1つを実装せえ"と言っている。
481: デフォルトの名無しさん [] 2023/03/04(土) 20:34:04.91 ID:0X36s/jF(2/3) AAS
似た内容をPythonで書いてみる。
``` {python a_8560, dependson = ""}
class Base:
def to_string (self): return self.as_string ()
def as_string (self): return self.to_string ()
class Derived (Base):
def to_string (self): return "hello " + type (self).__name__
Derived ().as_string ()
```
Haskellで書いてみる。
``` haskell
class Base_ a where
to_string :: a -> String
to_string = as_string
as_string :: a -> String
as_string = to_string
instance Base_ () where
to_string :: () -> String
to_string = ("hello " ++) . show
as_string ()
```
<pre>
"hello ()"
</pre>
482: デフォルトの名無しさん [] 2023/03/04(土) 20:37:50.63 ID:0X36s/jF(3/3) AAS
ワンセットの関数群をインターフェースと書く。
1. Pythonのクラスでは、
* 構造体の定義とインターフェースの定義と実装が同時に行われる。
1. HaskellのクラスやRのS3では、
* 構造体とインターフェースは別々に定義される。
* インターフェースの実装は既存の"構造体"に対して行われる。
HaskellやRの"構造体"には、通常の構造体に加えて、関数も含まれる。
構造体とインターフェースが別々に定義される点で、RのS3はHaskellのクラスに
近いように思う。
おしまい
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.038s