型クラスに関するここ数日の議論
型クラスがうんぬんというのが好きなクラスタは現実の世界をモデルに落とし込んでアプリケーションを構築するのが得意じゃない印象を受けるのは何故なのかしら。
2017-05-21 12:04:59何故かと言うと、そういう印象を持つ人は、型クラスを使って実用的なアプリケーションがすでに書かれていることを知らず、表面的なブログや百科事典的な記述だけから、「型クラスがうんぬんというのが好きなクラスタ」の実態を想像しているからですね twitter.com/cobot_1/status…
2017-05-21 13:39:18@daisuke_m 型クラスの解説は, 初級編とか中級編みたいな名前で, 複数の連続しない節に分かれてるから, それらが頭の中で繋げられてないかも.
2017-05-21 21:07:45型クラスと型クラスのインスタンスと言うのが何だか分かっていて、その上で自前で型クラスのインスタンスを定義して使用するやり方が分からない人向け / Scalaで型クラスを使おう! - Qiita - qiita.com/kmizu/items/b6…
2017-05-22 09:58:39scalaがimplicitでmixinと型クラスを実現しているのは良いのか悪いのか。kmizuさんがわざわざqiitaで記事書かないと行けないぐらいには使い方わかりづらいけど、言語デザインとしては仕様がミニマムになって良いのかもしれない?
2017-05-22 21:00:44@kmizu 型クラスが一般に浸透しているなら、型クラスと拡張メソッドをimplicits1つで提供するのではなくそれぞれ別の言語機能として提供してもいいようなきがするんですよね。
2017-05-22 21:16:53@k_bigwheel 名前とか、関連する用語が、オブジェクト指向言語の用語とかぶっているせいで、誤解を生みやすいという構造もあると思っています。自分が知る限り、型クラスに関する最も多い誤解が「(Java等における)インタフェースのようなもの」というもので
2017-05-22 21:35:31@kmizu 型クラスといいつつ、実際に使うときはクラスは宣言せずインスタンス(object)を宣言するところも僕はちょっと引っかかりました。というか今でもなんかしっくり来ていないですねw( qiita.com/kmizu/items/b6… ならRational が型クラスなんだと思いますが )
2017-05-22 21:40:53型クラスというのがそもそも結構むずかしいのだ、という認識のもとで、理解を広めるための記事を書くのが良さそうだというのが最近よく思うところ。そのときに、Scalaは割とましなのは、アリガチ誤解である「インタフェースのようなもの」を割と簡単に否定可能なところだと思う。
2017-05-22 21:40:58ところで、Haskell界隈においては、「型クラスがわからない」というのはあまりないように思えるのだけど(違っていたらすいません)、それはHaskellを実用的に使う上で型クラスを理解しないでいるのが無理だから、生きているHaskellユーザは皆理解している、のだ思う。
2017-05-22 21:46:40Scalaにおいては、型クラスのOOPL流の実現であるところのimplicit parameterについて、特に理解しなくてもある程度使うことができる一方で、implicit parameterを多用したライブラリも結構見るようになったので、わからんという話が出てくるのだと思う。
2017-05-22 21:48:36Scalaで型クラスを作るときのimplicit objectという表記がおもしろい。それ自体の名前で呼ばれるわけではないのでobjectとは思えないが、ただ一つの実体というのはobjectという感じがする。
2017-05-22 21:49:32はじめてHaskellを触ったとき、Int と Integer は型、Integral は型クラスで、Integral a => a が「Integralであるような型a」を表すということがわからなくてエラーメッセージが全く読めなくて困った記憶がある
2017-05-22 21:51:58型クラス、「interfaceのすごいやつ」的な説明をしがちなんだけど、よろしくないのかな。interface + デフォルト実装が持てる + 関数型に限定されない で大体あってない?駄目?
2017-05-22 21:55:08Haskellが読めなかったころがあまり思い出せないけどモナドとかの高階カインドな型が出てきたあたりで辛かったような。型クラスは「まさにこれが欲しかったんだよ」って思ってた
2017-05-22 21:55:32はてなブログに投稿しました #はてなブログ 型クラスをOrderingを用いて説明してみる - kmizuの日記 kmizu.hatenablog.com/entry/2017/05/…
2017-05-22 22:46:28implicit parameter方式、デフォルトと異なる引数を渡せるのが魅力的に見える。Haskellみたいに完全に隠蔽しちゃうとそれができないよね。しかもHaskellだと型クラスのインスタンス定義はグローバルにしかできなくて云々。
2017-05-22 23:16:37Scala、implicit parameterは型クラスなんだろうけど、型クラス知らなくても、implicit parameterは分かるから、あんまり型クラス、型クラス言わないほうが良いのでは?
2017-05-22 23:50:21型クラスと言わない、implicit parameterの説明をしなければならない気がする。
2017-05-22 23:51:44