型クラスに関するここ数日の議論
型クラスをOrderingを用いて説明してみる - kmizuの日記 kmizu.hatenablog.com/entry/2017/05/…
2017-05-23 02:31:22型クラスをOrderingを用いて説明してみる - kmizuの日記 kmizu.hatenablog.com/entry/2017/05/…
2017-05-23 09:17:38『型クラスはStrategyを暗黙に渡すための言語機構を用意している』 そうか、import可能(時には気付かぬうちにimportされてるが)なストラテジー、か。うんうん。 kmizu.hatenablog.com/entry/2017/05/…
2017-05-23 09:36:17俺の場合、型クラスが知りたい→で、あんたは型なの?クラスなの?クラスって何? で爆死するパターン。 本件に関しては、まず名前から何かを感じ取ろうとするのをやめた方がよかった。
2017-05-23 09:38:30@daisuke_m eed3si9n.com/learning-scala… import可能なのは、Scalaだけに見られる特徴ですね 型クラスの特徴とイコールではないです
2017-05-23 09:44:37@daisuke_m あくまで僕の理解ではあるんですけど、継承ツリーとかは型の次元の話で(Integer型はNumber型の一部みたいな)、型クラスは型そのものをグルーピングする型よりも一段上の概念みたいなイメッジです。ので、型クラスは「型分類」であって「型」じゃない的な。
2017-05-23 09:52:47@kamekoopa わかる、なんとなくわかる。 けど、継承やインターフェースで分類する特徴と、型クラスで分類する特徴、の違いがうまく言語化できない。いや、特徴は同じだけど、分類のアプローチが違うだけか…?
2017-05-23 09:56:53一般的なクラスベースOOPにおけるインタフェースにはレシーバが存在するので型クラスはインタフェースじゃないというの、正しいとは思うけど、とは言え結局のところやりたいのは複数の型をグルーピングして共通の操作を提供したいなので、概ねインタフェースでいいのではみたいな気持ち。
2017-05-23 09:58:23@daisuke_m 多分後者だと思いますね。そもそも型クラス、OOP界隈から出てきたやり方じゃないと思うので。
2017-05-23 10:00:451件のコメント b.hatena.ne.jp/entry/kmizu.ha… “型クラスをOrderingを用いて説明してみる - kmizuの日記” htn.to/677ER3 #Scala
2017-05-23 10:01:33@kamekoopa @daisuke_m かめくっぱさんのイメージで合ってます。 同じ性質を持ったオブジェクトを集めたものがOOPでの「クラス」ですが、同様に同じ性質を持った型を集めたものが「型クラス」です。 「「値を集めた型」を集めたクラス」って感じの2階建構造です。
2017-05-23 10:11:04型クラスは型クラスだし、モナドはモナドであって他の何でもない、と捉えたところでやっぱり分からん、みたいなのはあるかと思います(吐血
2017-05-23 10:14:54さすかめ先生がツイートされていますが、Javaしか知らない僕が最初に「型クラス」という言葉を聞いた時の印象が「頭の頭痛が痛い」というものに近い雰囲気でした
2017-05-23 10:26:52僕と型クラスとの出会い classキーワード? OOPのクラスみたいな感じなのか? 型クラス? なんだこれ 定義しかないじゃん インターフェースみたいなものか? インターフェースどころの騒ぎじゃないやんけ!?!?
2017-05-23 10:30:28@gakuzzzz これは、まだ、ガッと理解するのには難しい感想を持ちましたww 型クラスはnewして型にするには不完全で…。そこで使われるものが、もしかして:型コンストラクタ …?(新たなパンドラの箱感)
2017-05-23 10:32:30実用的にHaskell使ってるけど型クラスはインターフェイスみたいなものだって思ってるし何も間違ってないと思ってるよ…貧弱な言語のインターフェイスを想像すると違いがあるのかもしれないけど
2017-05-23 10:33:12@daisuke_m 型コンストラクタとはまたちょっと意味合いが異なりますね。型コンストラクタは単なる型引数を持つ型のことなので。 (まぁそういう意味では型クラスをimplicit parameterで表現しているScalaでは型クラスは必ず型コンストラクタでもあるとは言えますが……)
2017-05-23 10:36:13