2017-03-11 8 views
2

タイプクラスの代わりにf限定ポリモリズムを使用する理由はありますか?タイプクラスの代わりにf限定ポリモフィズムを使用する理由はありますか?

どちらも、Aが与えられた操作(メソッド)のセットをサポートしなければならない(関数を実装する/型定義のインスタンスである)関数f(a:A):Aを書くことの問題を解決します。

+0

いいえ、理由がありません。まあ、それは冗談です。私はあなたの質問は、実際に意見に基づいて広範だと思う。 – ZhekaKozlov

+1

共通の分母は型ですが、これらは異なるトピックです。真実はあなたがそれらを一緒に使うべきである(実用的な真実)。猫やScalazのソースを見てみると、あなたは両方を見ることができます。 – sebszyller

+0

同じ問題を解決すると、どちらが他のものより優れていますか? – jhegedus

答えて

2

エンドユーザーコードは、よりシンプルに、より短く、よりよく見えるかもしれません。

例:

def first[A](s: Seq[A]): A = s.head 

Seqは型クラスだった場合、ユーザーは、代わりに次のように記述する必要があります:

def first[A, F[_]](s: F[A])(implicit S: Seq[F]): A = S.head(s) 
+0

です。したがって、このマクロはhttps://github.com/mpilquist/simulacrum/blob/です。 master/README.md – jhegedus

+0

Simulacrumは型クラスバージョンの 'first'の左側を助けません。 – OlivierBlanvillain

+0

お役立ち情報... – jhegedus

関連する問題