10周年のSPコンテンツ!

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

ここ数日で型クラスに関する議論が何故かもりあがっていたので、一通りひろってまとめてみました。型クラスというお題で色々なところで議論が同時多発していた感じなので、全体の流れとかはあまりないです。
Java関連 言語 プログラミング Scala Haskell 型クラス
6
cobot_1 @cobot_1
型クラスがうんぬんというのが好きなクラスタは現実の世界をモデルに落とし込んでアプリケーションを構築するのが得意じゃない印象を受けるのは何故なのかしら。
フォクすけ @nerubesa
Scalaで型クラスを使おう! - Qiita ift.tt/2r0RLJQ
Cubbit @cubbit2
何故かと言うと、そういう印象を持つ人は、型クラスを使って実用的なアプリケーションがすでに書かれていることを知らず、表面的なブログや百科事典的な記述だけから、「型クラスがうんぬんというのが好きなクラスタ」の実態を想像しているからですね twitter.com/cobot_1/status…
都元ダイスケ🍅 @daisuke_m
@cocoatomo まだ型クラスがよくわかってないので、その辺の理解が望まれる。
tomo🐧 @cocoatomo
@daisuke_m 型クラスの解説は, 初級編とか中級編みたいな名前で, 複数の連続しない節に分かれてるから, それらが頭の中で繋げられてないかも.
誰か僕の右股関節と左足首と性根を何とかしてください @kamekoopa
型クラスと型クラスのインスタンスと言うのが何だか分かっていて、その上で自前で型クラスのインスタンスを定義して使用するやり方が分からない人向け / Scalaで型クラスを使おう! - Qiita - qiita.com/kmizu/items/b6…
🤓k.bigwheel🤓 @k_bigwheel
scalaがimplicitでmixinと型クラスを実現しているのは良いのか悪いのか。kmizuさんがわざわざqiitaで記事書かないと行けないぐらいには使い方わかりづらいけど、言語デザインとしては仕様がミニマムになって良いのかもしれない?
🤓k.bigwheel🤓 @k_bigwheel
@kmizu 型クラスが一般に浸透しているなら、型クラスと拡張メソッドをimplicits1つで提供するのではなくそれぞれ別の言語機能として提供してもいいようなきがするんですよね。
Kota Mizushima (on a diet) @kmizu
@k_bigwheel 名前とか、関連する用語が、オブジェクト指向言語の用語とかぶっているせいで、誤解を生みやすいという構造もあると思っています。自分が知る限り、型クラスに関する最も多い誤解が「(Java等における)インタフェースのようなもの」というもので
🤓k.bigwheel🤓 @k_bigwheel
@kmizu 型クラスといいつつ、実際に使うときはクラスは宣言せずインスタンス(object)を宣言するところも僕はちょっと引っかかりました。というか今でもなんかしっくり来ていないですねw( qiita.com/kmizu/items/b6… ならRational が型クラスなんだと思いますが )
Kota Mizushima (on a diet) @kmizu
型クラスというのがそもそも結構むずかしいのだ、という認識のもとで、理解を広めるための記事を書くのが良さそうだというのが最近よく思うところ。そのときに、Scalaは割とましなのは、アリガチ誤解である「インタフェースのようなもの」を割と簡単に否定可能なところだと思う。
Kota Mizushima (on a diet) @kmizu
ところで、Haskell界隈においては、「型クラスがわからない」というのはあまりないように思えるのだけど(違っていたらすいません)、それはHaskellを実用的に使う上で型クラスを理解しないでいるのが無理だから、生きているHaskellユーザは皆理解している、のだ思う。
Kota Mizushima (on a diet) @kmizu
Scalaにおいては、型クラスのOOPL流の実現であるところのimplicit parameterについて、特に理解しなくてもある程度使うことができる一方で、implicit parameterを多用したライブラリも結構見るようになったので、わからんという話が出てくるのだと思う。
しょしー @syocy
Scalaで型クラスを作るときのimplicit objectという表記がおもしろい。それ自体の名前で呼ばれるわけではないのでobjectとは思えないが、ただ一つの実体というのはobjectという感じがする。
NaOHaq(苛性ソーダ) @NaOHaq
はじめてHaskellを触ったとき、Int と Integer は型、Integral は型クラスで、Integral a => a が「Integralであるような型a」を表すということがわからなくてエラーメッセージが全く読めなくて困った記憶がある
kaki @gengar68
型クラス、「interfaceのすごいやつ」的な説明をしがちなんだけど、よろしくないのかな。interface + デフォルト実装が持てる + 関数型に限定されない で大体あってない?駄目?
κeen @blackenedgold
Haskellが読めなかったころがあまり思い出せないけどモナドとかの高階カインドな型が出てきたあたりで辛かったような。型クラスは「まさにこれが欲しかったんだよ」って思ってた
Kota Mizushima (on a diet) @kmizu
はてなブログに投稿しました #はてなブログ 型クラスをOrderingを用いて説明してみる - kmizuの日記 kmizu.hatenablog.com/entry/2017/05/…
kaki @gengar68
implicit parameter方式、デフォルトと異なる引数を渡せるのが魅力的に見える。Haskellみたいに完全に隠蔽しちゃうとそれができないよね。しかもHaskellだと型クラスのインスタンス定義はグローバルにしかできなくて云々。
はなだ☆のぶかず@lisp &ボドゲ勢ボドゲプレイヤー) @nobkz
Scala、implicit parameterは型クラスなんだろうけど、型クラス知らなくても、implicit parameterは分かるから、あんまり型クラス、型クラス言わないほうが良いのでは?
はなだ☆のぶかず@lisp &ボドゲ勢ボドゲプレイヤー) @nobkz
型クラスと言わない、implicit parameterの説明をしなければならない気がする。
残りを読む(160)

コメント

コメントがまだありません。感想を最初に伝えてみませんか?

ログインして広告を非表示にする
ログインして広告を非表示にする