型クラスに関するここ数日の議論

ここ数日で型クラスに関する議論が何故かもりあがっていたので、一通りひろってまとめてみました。型クラスというお題で色々なところで議論が同時多発していた感じなので、全体の流れとかはあまりないです。
6
前へ 1 2 3 ・・ 8 次へ
誰か僕の右股関節と性根を何とかしてください @kamekoopa

型クラス、もちださんと一緒で名にこの頭痛が痛いみたいなやつって感想だったしググってもアドホック多相を実現するものとか言う分かってるやつ以外に説明する気が全くない記事ばかりで界隈のハードさを感じたものです。

2017-05-23 10:38:43
がくぞ @gakuzzzz

@daisuke_m 型クラスもJavaのinterfaceもモチベーションとしては複数のデータ型に共通の振る舞いを持たせたい、というものです で、共通の振る舞いの各型毎の実装方法が interface -> implementsする 型クラス -> newしてインスタンスを定義する という感じです

2017-05-23 10:40:21
がくぞ @gakuzzzz

Haskellの型クラスインスタンスはファーストクラスオブジェクトではないけど、Scalaの場合は普通のクラス-インスタンスにマッピングされるから型クラスインスタンスも普通のインスタンスと同じものになってファーストクラスとして扱えちゃうので余計混乱しやすい感はある

2017-05-23 10:44:02
Takashi Miyamoto @tmiya_

@ruimo JavaのOOに例えると、型クラスはinterfaceみたいなものと思って良いような気がします。

2017-05-23 10:47:31
mather / Eisuke Kuwahata @mather314

集合の性質とか一つの側面を抽象化して定義するという意味で、型クラスはとても便利だと思う。集合そのものの抽象化(スーパークラス)、具体化(サブクラス)ではなく、「この集合はこの定義において順序集合とみなせる」というOrderingの定義が面白い。

2017-05-23 10:49:07
ruichi @ruicc

そうかscalaだけ知ってる人は型クラスという命名が謎なのか

2017-05-23 10:52:43
誰か僕の右股関節と性根を何とかしてください @kamekoopa

皆さんの心のなかには皆さんだけの型クラスがある。

2017-05-23 10:59:02
誰か僕の右股関節と性根を何とかしてください @kamekoopa

Strategyパターン分かってる人向けに、実用的な面だけで言うなら、型クラスは(Strategyの実装クラスのインスタンスが自動的に与えられる)Strategyパターンです。

2017-05-23 11:01:01
がくぞ @gakuzzzz

@nagise でも実際のところ、型クラスでデータ型の値を使わないケース、コンストラクタだけとは限らないですからねー……。

2017-05-23 11:04:09
Kentaro Inomata @matarillo

クラスベースOOPに型クラスを持ち込むときに「型クラス」という名前にしてしまうのは混乱のもと

2017-05-23 11:09:20
Kentaro Inomata @matarillo

クラスベースOOPの多相は基本的にクラスやインターフェースによるサブタイピングでやる。広く使われてるとはいえ、LSPを守るのはプログラマの責任だったり、共変反変がややこしかったり、いろいろつらみはある。型クラスは型じゃないので、サブタイピングのつらみはない。(別のつらみはある)

2017-05-23 11:14:04
がくぞ @gakuzzzz

@nagise Supplier<T> はまさしく型クラスにできるinterfaceですもんねー

2017-05-23 11:19:59
誰か僕の右股関節と性根を何とかしてください @kamekoopa

型クラスって何?→インタフェースみたいなもんだよ→ファンクタって何?→型クラスの一種だよ→つまりファンクタはファンクタインタフェースだよ→どんなインタフェースなの?→mapってメソッドがあることを約束するやつだよ

2017-05-23 11:23:05
Kentaro Inomata @matarillo

(HaskellやScalaの)型クラスが後付け可能なのはたしかに便利だけど、型クラス特有の性質というわけじゃない。オープンクラスなOOPで、既存のクラスに後付けでインターフェースを実装したりとか、ないわけじゃない

2017-05-23 11:27:55
誰か僕の右股関節と性根を何とかしてください @kamekoopa

分からない、俺達は雰囲気で型クラスを使っている

2017-05-23 11:32:09
Kenji Yoshida @xuwei_k

"今日も型クラスがない言語でプログラム書いて仕事しないといけないのに型クラスで盛り上がってるみなさん" という怒りを買いそうなフレーズ思いついたのでご自由にお使いください

2017-05-23 11:50:44
Kenji Yoshida @xuwei_k

List[A]において"Aが 比較可能、シリアライズ可能 etc"のときに List[A] 自体も "比較可能、シリアライズ可能 etc" (逆にAがそうでなければList[A]もそうではない) みたいな型クラスの利点の話があまり出てきてない(Javaの継承だと単純には不可能?)

2017-05-23 11:56:17
えいる@補助人工心臓で子育て🔥🌇 @eielh

型クラスが嬉しいのかアドホックタ相が嬉しいのか。Scalaで、ある型クラスのインスタンスの一覧とりたい時どうするんだろう。IDEA頼り?

2017-05-23 11:57:21
Yuta Okamoto @okapies

間違ってたら突っ込んで欲しいのだけど、型クラスは「(オブジェクト指向ではなく)データ指向で考える」という思想とセットである気はする。むろん、互いに(ある程度までは)エミュレートはできるのだけど。 twitter.com/matarillo/stat…

2017-05-23 12:01:44
Kenji Yoshida @xuwei_k

@nagise そうですね。というかさっきの自分の2つのtweetが誤解を招く言い方だったんですが "継承だと実質不可能(?)" "Javaでも継承使わず、型クラスのインスタンスを明示的に渡していく方式なら不可能ではないが、とても面倒" がより正しいというか言いたかったことですね

2017-05-23 12:21:24
ると @cocoa_ruto

Swiftはクラスの型変数が特定の条件を満たしている時だけ呼べるメソッドを後付けで定義できる(例えば数値の配列だけsumが呼べるとかできる)のと、型変数の静的メンバを呼べるので、型クラス的なことができる。 developer.apple.com/library/conten…

2017-05-23 12:38:55
m2ym @m2ym

個人的には Scala の Implicit Parameters を「型クラス」だと捉える向きに違和感を覚える。初心者に説明するための便宜としては良いかもしれないけど、型の情報から証明探索によって実装を自動導出するという重要な考え方を限定してしまうのではないかと思う

2017-05-23 12:45:59
かたいなか @katainaka0503

等価関係や大小関係を表すにはポリモーフィックになっちゃうinterfaceじゃ力不足で型クラスのほうが良いと思ってる

2017-05-23 12:49:10
えいる@補助人工心臓で子育て🔥🌇 @eielh

型クラス はある型 もしくは 複数の型があるプロトコルを実装することで、同じ性質をもつものと分類する機能だと思うので、インターフェースのすごいやつぐらいの認識でいい気がしているけど、正しい理解かは知らない。

2017-05-23 13:02:43
Kota Mizushima (on a diet) @kmizu

@m2ym まず、事実として、Scalaのimplicit parameterは型クラスをオブジェクト指向言語に自然に導入するための機能で、とらえるというか、「型クラスそのもの」です。違うのは、辞書渡しが表のシグネチャとして見えるところでしょうか。

2017-05-23 14:14:06
前へ 1 2 3 ・・ 8 次へ